MySQL高级_索引失效优化


MySQL高级_索引失效优化

1 建表

MySQL高级_索引失效优化

2 最佳左前缀法则

如果索引了多列,要遵守最左前缀法则。指的是查询从索引的最左前列开始并且不跳过索引中的列。
MySQL高级_索引失效优化
MySQL高级_索引失效优化
MySQL高级_索引失效优化
MySQL高级_索引失效优化
MySQL高级_索引失效优化
MySQL高级_索引失效优化
建立索引时,顺序为name(一楼) ,age(二楼) ,fos (三楼),前面的楼层不使用,后面的索引就失效
MySQL高级_索引失效优化

3 不在索引列上做任何操作(计算、函数、(自动or手动)类型转换),会导致索引失效而转向全表扫描

MySQL高级_索引失效优化
MySQL高级_索引失效优化

4 存储引擎不能使用索引中范围条件右边的列

MySQL高级_索引失效优化

5 mysql 在使用不等于(!= 或者<>)的时候无法使用索引会导致全表扫描

add_time没建立索引
MySQL高级_索引失效优化
MySQL高级_索引失效优化

6 mysql 在使用不等于(!= 或者<>)的时候无法使用索引会导致全表扫描

MySQL高级_索引失效优化

7 is not null 也无法使用索引,但是is null是可以使用索引的

MySQL高级_索引失效优化

8 like以通配符开头(’%abc…’)mysql索引失效会变成全表扫描的操作

MySQL高级_索引失效优化
MySQL高级_索引失效优化

问题:解决like%字符串%时索引不被使用的方法??

MySQL高级_索引失效优化
MySQL高级_索引失效优化
MySQL高级_索引失效优化
MySQL高级_索引失效优化
MySQL高级_索引失效优化
MySQL高级_索引失效优化
覆盖索引
MySQL高级_索引失效优化
MySQL高级_索引失效优化
MySQL高级_索引失效优化
MySQL高级_索引失效优化
MySQL高级_索引失效优化
MySQL高级_索引失效优化
MySQL高级_索引失效优化
MySQL高级_索引失效优化

9 字符串不加单引号索引失效

MySQL高级_索引失效优化
MySQL高级_索引失效优化

10 少用or,用它来连接时会索引失效

MySQL高级_索引失效优化

11 总结

MySQL高级_索引失效优化