如何避免索引失效
2019-03-26 19:17
134 查看
- 全值匹配
- 最佳左前缀法则(如果索引了多列,要遵守最左前缀法则。指得时查询从索引的最左前列开始并且不跳过索引中的列)
- 不在索引列上左任何操作(计算、函数、(自动or手动)类型转换)。
因为在索引列上做操作会导致索引失效而转向全表扫描 - 存储引擎不能使用索引中范围条件右边的列
- 尽量使用覆盖索引(只访问索引的查询(索引列和查询列一致)),减少select *
- MySQL 在使用不等于(!= 或者 <>)的时候无法使用索引会导致全表扫描
- is null, is not null 也无法使用索引(关键字段最好也弄个默认值,比如-1或者其他XX,尽量不要设空值)
- like 以通配符开头(’%abc…’) MySQL索引会失效编程全表扫描的操作
所以尽量把%写右边
如果一定要在两边写% %,则可以使用覆盖索引。 - 字符串不加单引号会导致索引失效(因为违反了第3条)
- 少用or,用它来连接时会索引失效
相关文章推荐
- 如何避免索引失效
- SQLITE3中的索引使用方法-如何避免使用字符串做索引
- 深入理解Oracle索引(18):函数索引的陷阱以及如何避免索引被污染
- 避免索引失效
- SQL优化避免索引失效
- 如何避免单点失效(上)
- C++:在遍历/循环中删除map元素, 如何避免iter 迭代器失效
- 如何查找oracle中失效的索引?
- 深入理解Oracle索引(18):函数索引的陷阱以及如何避免索引被污染
- db2 中索引统计信息(防止失效) 以及如何定时执行
- SQL优化 MySQL版 - 避免索引失效原则(二)
- SQL优化避免索引失效
- 如何避免单点失效(上)
- SQL优化避免索引失效
- magento索引失效,如何刷新索引
- SQL优化 MySQL版 - 避免索引失效原则(一)
- Oracle优化你的查询--关于避免索引隐式失效
- 如何避免索引调节,深入分析段合并
- 深入理解Oracle索引(18):函数索引的陷阱以及如何避免索引被污染
- 如何检查一个表的索引是否失效