MySQL-MYSQL中WHERE条件为某字段不等于空为什么不走索引?
比如,执行EXPLAIN SELECT * FROM TABLE1 WHERE field1 != '' AND field2 != ''
这条语句时,结果显示‘猜测会用到的索引’是field1,field2但“实际用到的索引”却是空?
field1和field2有建立联合索引。
是因为!=''这样的条件判断起来很快不需要走索引么?
如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。
绑定邮箱获取回复消息
由于您还没有绑定你的真实邮箱,如果其他用户或者作者回复了您的评论,将不能在第一时间通知您!
发布评论
评论(1)
应该是很简单的原因。
索引之所以能提高性能, 因为索引的可选择性. 比方说, 10w条记录, 用索引可以马上定位出其中的一条或几条记录; 但如果你的sql需要去检查9w条记录, 那么肯定不能走索引, 而应该全表扫(不考虑覆盖索引).
你的sql, 应该也是一样吧. 估计大部分记录都满足 field1 != '' AND field2 != ''
PS: 字段为空是说 is null, ''不叫字段为空.