赞
踩
1. 如果排序字段没有设置索引,会导致filesort,效率降低
。
filesort:在Extra列中出现了filesort字段则说明排序字段在内存中或者在磁盘中进行排序
explain select salary from employees order by last_name;
会导致 extra中出现 filesort,效率降低
2. 没有过滤条件使用 order by,则order by中的条件不会走索引,即使加了索引
explain select salary from employees where salary=6000 order by salary;
3. order by 中出现的字段 与联合索引的顺序错误,会导致Extra出现filesort,不满足最左前缀
4. order by 排序字段若有多个,则要么都降序,要么都升序,若同时出现了降序和升序会导致Extra中出现filesort
字段的数值有唯一性
的限制
频繁
作为where查询条件
的字段
某个字段在select语句的where条件中经常被使用到,那么就需要给这个字段创建索引。尤其时候当数据量大的情况下,创建索引可以大幅度
提升查询效率
经常Group BY
和 Order By
的列
索引就是让数据按照某种顺序进行存储
或检索
,因此当我们使用GroupBy对数据进行分组查询,获取使用OrderBy对数据进行排序的时候,就需要对分组或者排序的字段进行索引
。若都出现了GroupBy
和OrderBy
的列可以添加联合索引
Update
和Delete
的where
条件列
更新的时候,更新的字段是非索引字段,提升的效率会更明显,这是因为非索引字段更新不需要对原有索引进行维护
distinct字段需要创建索引
多表join连接操作时,创建索引注意事项
首先,连接表的数量尽量不要超过3张
,因为每增加一张表就相当于增加了一次嵌套循环,数量级增长很快影响效率
其次,对where条件创建索引
,因为where才是对数据条件的过滤。
最后,对用于连接的字段创建索引
,并且该字段在多张表中的类型必须一致
。
使用字符串前缀创建索引
例如:address varchar(120),做数据库中的address字段存储的数据都很长,可以使用
add index(address(12))来当索引,既节约空间
又减少了字符串的比较时间
区分度高的列适合作为索引
使用最频繁的列放到联合索引的左侧
务必
将 这个范围查询的字段
放在联合索引
的最后例如
select xxx from table where A='' And B>xx And C=''
来自B站尚硅谷课程总结
Copyright © 2003-2013 www.wpsshop.cn 版权所有,并保留所有权利。