- or:如果条件中有or,即使其中有条件带索引也不会使用(这也是为什么尽量少用or的原因)
- 注意:要想使用or,又想让索引生效,只能将or条件中的每个列都加上索引
- 联合索引,不是使用的第一部分,则不会使用索引(未满足最左前缀原则)
- 模糊查询:like查询是以%开头
- 模糊查询不以 % 开头,会使用索引
- 针对以 % 开头索引失效的问题,解决方案:使用覆盖索引
- 字符串:如果列类型是字符串,那一定要在条件中将数据使用引号引用起来,否则不使用索引;
- 运算操作:在索引列上做任何操作(计算,函数,(自动或者手动)类型装换),会导致索引失效而导致全表扫描
- 范围条件:存储引擎不能使用索引中范围条件右边的列,范围之后索引失效。(< ,> between and)
- 不等于:mysql使用不等于(!= 或者<>)的时候,无法使用索引,会导致索引失效
- 是否为空:mysql中使用is not null 或者 is null会导致无法使用索引
- 全表扫描更优:如果mysql估计使用全表扫描要比使用索引快,则不使用索引
posted @
2021-01-18 22:19
Be-myself
阅读(
783)
评论()
编辑
收藏
举报
levels of contents
点击查看具体代码内容