最左前缀原则不适用于or表达式?

WildGhost 2023-04-07 18:30:13

mysql官方文档——
https://dev.mysql.com/doc/refman/8.0/en/multiple-column-indexes.html
这上面说,

SELECT * FROM test WHERE last_name='Jones' AND first_name='John';

会使用索引;

SELECT * FROM test WHERE last_name='Jones' OR first_name='John';

不会使用索引;两个语句差别仅仅只是一个是AND一个是OR;
请问这是什么原因啊?文档上也没有解释。

...全文
90 3 打赏 收藏 转发到动态 举报
写回复
用AI写文章
3 条回复
切换为时间正序
请发表友善的回复…
发表回复
  • 打赏
  • 举报
回复

你可以自己尝试 理解一下这个查询过程。
就知道 为啥它不走索引了。
有可能会走 索引的全局遍历。

小辉辉237 2023-05-16
  • 打赏
  • 举报
回复

两列分别加上索引 应该也是可以走索引的

正怒月神 2023-05-12
  • 打赏
  • 举报
回复

如果没有特殊的情况,or 就是不会走索引的。

56,677

社区成员

发帖
与我相关
我的任务
社区描述
MySQL相关内容讨论专区
社区管理员
  • MySQL
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧