文章目录
- 总体原则
- 案例一:索引第一个字段不能丢,否则索引失效
- 案例二:索引列上少计算
- 案例三:范围之后全失效
- [案例四:尽量少使用select *、不等于(!=或者<>)、is null,is not null、%加尽量右边](#案例四:尽量少使用select *、不等于(!=或者<>)、is null,is not null、%加尽量右边)
- 小总结
总体原则
sql
1、全值匹配我最爱
2、最佳左前缀法则:指的是查询从索引的最左前列开始且不跳过索引中的列。(带头大哥不能死,中间兄弟不能断)
3、不在索引列上做任何操作(计算、函数、自动or手动类型转换),会导致索引失效而转向全表扫描type=all(索引列上少计算)
4、不能使用索引中范围条件右边的列(范围之后全失效)
5、尽量使用覆盖索引(索引列和查询列一致),(尽量减少使用select *)
6、like以通配符开头mysql索引失效会变成全表扫描的操作 (like %加右边)
7、字符串varchar不加单引号索引失效(字符串里留引号)
8、is null,is not null, or, != 无法使用索引会导致全表扫描
SQL索引优化口诀
全值匹配我最爱,最左前缀要遵守;
带头大哥不能死,中间兄弟不能断;
索引列上少计算,范围之后全失效;
LIKE百分写最右,覆盖索引不写星;
不等空值还有or,索引失效要少用;
VAR引号不可丢,SQL高级也不难!
案例一:索引第一个字段不能丢,否则索引失效
新建索引:ALTER TABLE staffs ADD INDEX idx_ staffs nameAgePos(name, age, pos),
案例二:索引列上少计算

案例三:范围之后全失效

案例四:尽量少使用select *、不等于(!=或者<>)、is null,is not null、%加尽量右边

小总结
