|
全值匹配
最左前缀法则:如果索引了多列,要遵循最左前缀法则。查询从最左侧开始并且不跳过索引中的列
不在索引列上做任何操作(计算、函数、自动or手动类型转换)、会导致索引失效而导致全表扫描
存储引擎不能使用索引中范围右面的列。a = 1 and b>2 and c=3,c失效
尽量使用覆盖索引,减少select *
mysql在使用不等于的时候会使索引失效,导致全表扫描
is null、is not null也无法使用索引
like以通配符开头会导致全表扫描
字符串不加单引号索引失效
少用or或in,可能导致索引失效,这个需要看mysql的优化方案
优化
mysql支持两种排序filesort和index。using index是指扫描索引本身完成排序,index效率高
order by使用index的情况,使用索引最左前列,使用where语句和order by语句组合满足索引最左前列
尽量在索引列上完成排序,遵循索引建立时的最左前缀法则
如果order by条件不在索引列上,就会产生using filesort
能用覆盖索引尽量用覆盖索引
group by和order by很类似,其实质是先排序后分组,遵照索引创建的最左前缀原则
where高于having,能写在where的不要写在having |
|