MySQL-MYSQL中WHERE条件为某字段不等于空为什么不走索引?

发布于 2017-09-10 22:08:58 字数 213 浏览 1536 评论 1

比如,执行EXPLAIN SELECT * FROM TABLE1 WHERE field1 != '' AND field2 != ''
这条语句时,结果显示‘猜测会用到的索引’是field1,field2但“实际用到的索引”却是空?
field1和field2有建立联合索引。
是因为!=''这样的条件判断起来很快不需要走索引么?

如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。

扫码二维码加入Web技术交流群

发布评论

需要 登录 才能够评论, 你可以免费 注册 一个本站的账号。

评论(1

清晨说ぺ晚安 2017-09-16 08:09:02

应该是很简单的原因。

索引之所以能提高性能, 因为索引的可选择性. 比方说, 10w条记录, 用索引可以马上定位出其中的一条或几条记录; 但如果你的sql需要去检查9w条记录, 那么肯定不能走索引, 而应该全表扫(不考虑覆盖索引).

你的sql, 应该也是一样吧. 估计大部分记录都满足 field1 != '' AND field2 != ''

PS: 字段为空是说 is null, ''不叫字段为空.

~没有更多了~
我们使用 Cookies 和其他技术来定制您的体验包括您的登录状态等。通过阅读我们的 隐私政策 了解更多相关信息。 单击 接受 或继续使用网站,即表示您同意使用 Cookies 和您的相关数据。
原文