第十六章: 利用索引改善性能

1、 create index

单字段索引:  create index index_name on table_name (column_name);
唯一索引:     create unique index index_name on table_name (column_name);

// 当 某列所有元素中存在相同的值时,创建 unique idnex 会失败。

// 当基于某列创建unique_index 时,插入元素时该列的值和之前的值重复也会报错。

组合索引: 一个表中有两个或者多个字段的索引

  create index index_name on table_name (column1,column2);

2、何时考虑设置索引

3、 drop index index_name on table_name ;      // 删除索引

4、 alter index index_name ;     //修改索引  

5、 查看索引: 某个表中所有的索引,包括primary key

    show index from table_name;

第二十章: 创建和使用视图及异名

  视图是一个虚拟表,它只保存在内存里,不占实际的存储空间,不保存数据,它只是从表里引用数据,它的使用方式和表是一样的.

  1. 视图的使用场景
    • 简化数据访问
      有时候数据在表里的格式并不适合终端查询,这时可以创建一系列的视图.
    • 作为一种安全策略
      视图可以限制用户只访问表里特定字段或满足一定条件的记录.
    • 维护摘要数据
      如果摘要数据所基于的表经常更新,那么使用视图要比每次都写SQL来的方便

  2、创建视图
    MySQL的文档中对创建视图是这样定义的:

    CREATE  [OR REPLACE] [ALGORITHM = {UNDEFINED | MERGE | TEMPTABLE}]

    [DEFINER = { user | CURRENT_USER }] [SQL SECURITY { DEFINER | INVOKER }]
    VIEW view_name [(column_list)]
    AS select_statement
    [WITH [CASCADED | LOCAL] CHECK OPTION]

  一个普通的视图创建语句是这样的:

  CREATE VIEW V_CUSTOMERS AS SELECT * FROM V_CUSTOMERS;

    1. WITH CHECK OPTION
      这个用的不是很多.它像是一种约束.如果在创建视图的适合使用了这个选项,那么当向表中插入或者更新的记录不符合视图的条件时则操作失败.
    2. 删除视图
      跟删除表一样,使用DROP可以删除一个视图:
      DROP VIEW V_CUSTOMERS;

  从视图创建视图:

    create table table_name as select column1,colum2 from table_from_view;

3、视图和表的区别和联系 
区别:1、视图是已经编译好的sql语句。而表不是  
      2、视图没有实际的物理记录。而表有。
      3、表是内容,视图是窗口
      4、表只用物理空间而视图不占用物理空间,视图只是逻辑概念的存在,表可以及时对它进行修改,但视图只能有创建的语句来修改
      5、表是内模式,视图是外模式
      6、视图是查看数据表的一种方法,可以查询数据表中某些字段构成的数据,只是一些SQL语句的集合。从安全的角度说,视图可以不给用户接触数据表,从而不知道表结构。
      7、表属于全局模式中的表,是实表;视图属于局部模式的表,是虚表。 
      8、视图的建立和删除只影响视图本身,不影响对应的基本表。
联系: 视图(view)是在基本表之上建立的表,它的结构(即所定义的列)和内容(即所有数据行)都来自基本表,它依据基本表存在而存在。一个视图可以对应一个基本表,

也可以对应多个基本表。视图是基本表的抽象和在逻辑意义上建立的新关系。

4、 异名: 表或者视图的另一个名字,访问时可以不适用完整的名字。

  创建异名: create [public | private ] synonym synonym_name for table_name|view_name ;

  删除异名: drop synonym synonym_name;

  应用: select synonym_name ;   == select * from table_name ;

可以不添加所有者的名字就能访问这个表。

sql 入门经典(第五版) Ryan Stephens 学习笔记 第五部分: 性能调整的更多相关文章

  1. sql 入门经典(第五版) Ryan Stephens 学习笔记 后续——存储引擎

    一.引擎基础 1 查看系统支持的存储引擎 show engines; 2 查看表使用的存储引擎两种方法: a.show table status from database_name where na ...

  2. sql 入门经典(第五版) Ryan Stephens 学习笔记  第四部分:建立复杂的数据库查询/

    第十三章: 在查询表里结合表 1.等值结合 : // 选择 tabla_a 和table_b 中id相等的行,输出 他们的id 和name select table_a.id , table_a.na ...

  3. sql 入门经典(第五版) Ryan Stephens 学习笔记 (第六,七,八,九,十章,十一章,十二章)

    第六章: 管理数据库事务 事务 是 由第五章 数据操作语言完成的  DML ,是对数据库锁做的一个操作或者修改. 所有事务都有开始和结束 事务可以被保存和撤销 如果事务在中途失败,事务中的任何部分都不 ...

  4. sql 入门经典(第五版) Ryan Stephens 学习笔记 (第一,二,三,,四,五章)

    SQL - Structured  Query Language (结构化查询语言) 1/ SQL 命令的类型 : 数据定义语言: DDL 数据操作语言: DML 数据查询语言: DQL 数据控制语言 ...

  5. 《Python基础教程(第二版)》学习笔记 -> 第五章 条件、循环 和 其他语句

    条件和条件语句 下面的值在作为布尔表达式的时候,会被解释器看作假(False):False None    0    ""    ()    []    {} 条件执行和if语句 ...

  6. C语言学习书籍推荐《C语言入门经典(第5版)》下载

    霍尔顿 (Ivor Horton) (作者), 杨浩 (译者) 下载地址:点我 C语言是每一位程序员都应该掌握的基础语言.C语言是微软.NET编程中使用的C#语言的基础:C语言是iPhone.iPad ...

  7. SQL入门经典(十) 之事务

    事务是什么?事务关键在与其原子性.原子性概念是指可以把一些事情当作一个执行单元来看待.从数据库角度看待.他是指应该全部执行或者全部不执行一条或多条语句的最小组合.当处理数据时候经常确保一件事发生另一件 ...

  8. c语言入门经典(第5版)

    文章转载:http://mrcaoyc.blog.163.com/blog/static/23939201520159135915734 文件大小:126MB 文件格式:PDF    [点击下载] C ...

  9. 《SQL入门经典》总结

    <SQL入门经典>这本书从考试前就开了个头,一直到前两天才看完,拉的战线也够长的.放假来了,基本上什么内容都不记得了.好不容易看完了,就赶紧总结一下吧! 该书分为两大部分,第一部分是第1~ ...

随机推荐

  1. jquery常用选择器

    1.数字性过滤 $("tr:first")               //选择所有tr元素的第一个 $("tr:last")                / ...

  2. [JS,NodeJs]个人网站效果代码集合

    上次发的个人网站效果代码集合: 代码集合: 1.彩色文字墙[鼠标涟漪痕迹] 2.彩色旋转圆环 [模仿http://www.moma.org/interactives/exhibitions/2012/ ...

  3. A除以B问题

    描述:本题要求计算A/B,其中A是不超过1000位的正整数,B是1位正整数.你需要输出商数Q和余数R,使得A = B * Q + R成立. 输入:输入在1行中依次给出A和B,中间以1空格分隔. 输出: ...

  4. 文件无刷新上传(swfUpload与uploadify)

    文件无刷新上传并获取保存到服务器端的路径 遇到上传文件的问题,结合之前用到过的swfUpload,又找了一个无刷新上传文件的jquery插件uploadify,写篇博客记录一下分别介绍这两个插件的实现 ...

  5. SAP中关于用户IP信息的获取(转载)

    SAP中如何获取登录用户的IP? 或如何查看哪些IP登录到SAP中: 在Table: USR41中查看,具体字段的说明如下: MANDT   ---   ClientBNAME   ---   登录的 ...

  6. JAVA基础学习day13--String、StringBuilder与StringBuffer与包装类

    一.String 1.1.String String 类是final修饰的,是顶级类,不可被继承 String 类代表字符串.Java 程序中的所有字符串字面值(如 "abc" ) ...

  7. 【转】从viewController讲到强制横屏,附IOS5强制横屏的有效办法

    文字罗嗦,篇幅较长,只需营养可直接看红字部分. 一个viewController的初始化大概涉及到如下几个方法的调用: initWithNibName:bundle: viewDidLoad view ...

  8. Android UI之下拉刷新上拉刷新实现

    在实际开发中我们经常要用到上拉刷新和下拉刷新,因此今天我写了一个上拉和下拉刷新的demo,有一个自定义的下拉刷新控件 只需要在布局文件中直接引用就可以使用,非常方便,非常使用,以下是源代码: 自定义的 ...

  9. javascript之工厂方式定义对象

    每一个函数对象都有一个length属性,表示该函数期望接收的参数个数. <html> <head> <script type="text/javascript& ...

  10. C#照片批量压缩小工具

    做了一个照片批量压缩工具,其实核心代码几分钟就完成了,但整个小工具做下来还是花了一天的时间.中间遇到了大堆问题,并寻求最好的解决方案予以解决.现在就分享一下这个看似简单的小工具所使用的技术. 软件界面 ...