只要创建了索引,就一定会走索引吗? (索引什么时候失效)
只要创建了索引,就一定会走索引吗? (索引什么时候失效)
我来答
添加附件
收藏
复制链接
微信扫码分享

在小程序上查看
分享
添加附件
问题补充
7条回答
默认
最新
不一定。在有些情况下,索引可能不被使用:
- 使用了!或<>
SELECT * FROM `user` WHERE `name` != 'Durant';
复制
- 隐式类型转换
下面salary设计的时候是double,被写错为整数了,不会使用索引。
SELECT * FROM `user` WHERE salary= 17500;
复制
- 索引列参与了计算
SELECT `sname` FROM `t_stu` WHERE `age`+10=30; -- 不会使用索引!!因为所有索引列参与了计算
复制
- 索引列使用了函数
SELECT `sname` FROM `stu` WHERE concat(`sname`,'abc') ='Jaskeyabc'; -- 不会使用索引,因为使用了函数运算,原理与上面相同
复制
- 索引列使用了Like %XXX
SELECT * FROM `user` WHERE `name` LIKE '%冰';
复制
- or只有所有条件建立索引,才会使用索引
SELECT * FROM `user` WHERE `name` = '张三' OR height = '175';
复制
- 使用了order by
在ORDER BY操作中,排序的列同时也在WHERE中时,MYSQL将无法使用索引;


打赏 0

不一定。在有些情况下,索引可能不被使用
不一定。在有些情况下,索引可能不被使用。


打赏 0
不一定。在有些情况下,索引可能不被使用。


打赏 0
回答交流
Markdown
一级标题
二级标题
三级标题
四级标题
五级标题
六级标题
添加图片链接
上传图片
导航目录
Markdown语法参考
请输入正文
提示
提交
问题信息
请登录之后查看
邀请回答
暂无人订阅该标签,敬请期待~~
