您的位置:首页 > 数据库 > MySQL

MySQL优化(二)

2016-11-13 19:39 197 查看


索引的使用

Index

索引与数据的关系:

字典中:

拼音检索                字的解释。

部首检索                字的解释。

关键字:数据的某个用于建立索引的属性值。

Tip:索引都是按照关键字排序的。

辨析:

约束constraint:   功能在于限制

索引index:            功能在于定位记录

联系是:

约束依赖于索引来实现的

索引的分类

索引的使用类型角度:4种分类:

主索引:         要求关键字 唯一 并且不能为空。

唯一索引:     要求关键字唯一的。

普通索引:     任意属性都可以作为关键字,来进行索引。

全文索引:     创建索引时,不是依据具体字段的值,而是利用数据内提取的有效关键字来建立索引。

Tip:无论何种索引,功能都是利用关键字定位记录位置。

差异:各个索引对关键字的要求上。

管理索引的语法

添加索引

创建表时,一起添加索引:



索引类型 `可选的索引的名字` (索引的字段列表)

其中索引的名字:可选的。如果不指定,采用字段列表中的第一个字段来为索引命名。

主索引没有名字,原因表仅仅可以存在一个主索引,其他类型的索引可以出现多次。

修改表结构,添加索引:



还可以在字段后,直接索引类型。但是不能建立多字段索引。

如果在多个字段建立一个索引,该索引也称复合索引。

删除索引:

Alter table table_name drop primary key;

Alter table table_name drop index `索引名`;



执行计划– explain

通过explain语句,来解释查看 一条 select语句所形成的执行计划。

(tip:<5.6仅仅支持select语句的执行计划)

Explain select 语句

返回该select语句的执行计划,但是不会真正执行该select语句。



Rows:需要从数据源中获得多少数据,才能得到最后的结果。

索引的使用原则

全值匹配:

相等



范围匹配:

大于,小于



左值原则:

其一:如果使用Like查询,要求不以通配符(%_)开头。



其二:复合索引中,只有字段列表中左边的字段值确定,右边的字段才能使用索引。



多个字段,要求左边字段先确定索引:



列独立:

列必须独立出现在表达式的一端。



独立之后:



Or表达式要求每个字段都有可用的索引,最终才会使用索引:



都有索引:



Mysql判断使用索引不会比全表扫描要快

原因,扫描索引后定位数据,随机的磁盘IO。但是全表扫描,顺序的磁盘IO。

 

当获取的数据量过多时,会选择使用全表扫描的顺序IO代替使用索引的随机IO.
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: