mysql or 关键字的执行问题

2023-01-05 10:40:20 +08:00
 moxiaowei

关于 mysql 的 or 查询,比如 select...from...where name=xxx or age =xxx 。这一条 sql 语句,在 mysql 执行的时候,是把 sql 拆分为 select...from...where name=xxx 拿到结果临时存起来再执行 select...from...where age =xxx 再跟前面的结果进行合并呢,还是 就当做一条语句执行?因为,在看关于 or 的索引失效的问题,解决方案是 or 前后的字段都需要加索引,我感觉是把 select...from...where name=xxx or age =xxx 拆分开执行的?有没有大佬跟我讲解下。谢谢

1364 次点击
所在节点    MySQL
4 条回复
shanghai1943
2023-01-05 11:11:22 +08:00
mysql 啥版本的。可以 explain 看看查询计划的结果。实在不放心的话,就把 or 语句拆成 union 的写法。但不管怎样,执行 SQL 前养成先 explain 一下的习惯总归是不错的。
GuardX
2023-01-05 11:36:28 +08:00
explain 看下走的哪个索引
8355
2023-01-05 12:04:04 +08:00
肯定是拆分执行更好
但如果需要排序等等其他操作你的程序整体实行速度可能并不一定比 or 要好 看整体性能不要只看 sql
leopod1995
2023-01-05 18:51:17 +08:00
没有索引的话 是全表扫。 可以理解为 fetch 一条数据进行匹配,or 在这种情况下是同时匹配条件的

这是一个专为移动设备优化的页面(即为了让你能够在 Google 搜索结果里秒开这个页面),如果你希望参与 V2EX 社区的讨论,你可以继续到 V2EX 上打开本讨论主题的完整版本。

https://www.v2ex.com/t/906684

V2EX 是创意工作者们的社区,是一个分享自己正在做的有趣事物、交流想法,可以遇见新朋友甚至新机会的地方。

V2EX is a community of developers, designers and creative people.

© 2021 V2EX