使用索引
规则
全值匹配:查询的字段按照顺序在索引中都可以匹配到,
最佳左前缀法则:指的过滤条件要使用索引必须按照索引建立时的顺序依次满足 , 一旦跳过某个字段 , 索引后面的字段都无法被使用。
不在索引列上做计算:不在索引列上做任何操作(计算、函数、(自动 or 手动)类型转换「尤其注意 varchar 和 int」),会导致索引失效而转向全表扫描。
索引列上不能有范围查询:将可能做范围查询的字段的索引顺序放在最后
尽量使用覆盖索引:查询列和索引列一致,不写 select *;
不使用不等于(!=以及 <>)
当字段允许为 NULL 时:where 后条件 is null 可以使用索引,is not null 不可以用到索引
Like 以通配符(%sadfj%)开头时,MySQL 索引失效。解决办法:①可以使用主键索引;②使用覆盖索引,查询字段必须是建立覆盖索引字段;③当覆盖索引指向的字段是 varchar(380) 及 380 以上的字段时,覆盖索引会失效!
字符串不加单引号索引失效
少用 or,用了索引会失效
示例
助记口诀
全职匹配我最爱,最左前缀要遵守;
带头大哥不能死