一、建立索引
1 表的主键、外键必须有索引;
2 数据量超过300的表应该有索引;
3 经常与其他表进行连接的表,在连接字段上应该建立索引;
4 经常出现在Where子句中的字段,特别是大表的字段,应该建立索引;
5 索引应该建在选择性高的字段上;
6 索引应该建在小字段上,对于大的文本字段甚至超长字段,不要建索引;
7 复合索引的建立需要进行仔细分析;尽量考虑用单字段索引代替:
8 频繁进行数据操作的表,不要建立太多的索引;
9 删除无用的索引,避免对执行计划造成负面影响;
二、联合索引生效条件
1.两个或者多个列上的索引叫做复合或联合索引。
2.mysql中从左到右使用索引的字段,一个查询可以只使用索引中的一部分,但只能是最左侧。
3.创建符合索引时,应该仔细考虑列的顺序。对索引中所有列或仅对前几列执行搜索时,
4.复合索引将会非常有用,仅对后面的任意列执行搜索时,复合索引没有任何用处。
三、失效条件
1.减少或者避免 select *
2.在使用<> 或 !=时会导致索引失并且进行全盘扫描
3.like以通配符开头 ‘%abc…’ 开头会导致索引失效,全盘扫描
4.在索引列上做计算、函数、类型转换会导致索引失效
5.存储引擎不能使用索引范围右边的列
6.is null not is null 无法使用索引
建议:
1.单键索引,尽量选择对于当前select适配性更好的索引
2.使用组合索引时,当前查询过滤性最好的字段在索引中的位置越靠前越好
3.使用组合索引时,尽量选择可以能够包含当前查询条件中更多字段的索引
评论