为了账号安全,请及时绑定邮箱和手机立即绑定

MySQL OR与IN性能

MySQL OR与IN性能

慕标5832272 2019-06-24 11:15:05
MySQL OR与IN性能我想知道在性能方面是否存在以下方面的差异SELECT ... FROM ... WHERE someFIELD IN(1,2,3,4)SELECT ... FROM ... WHERE someFIELD between  0 AND 5SELECT ... FROM ...  WHERE someFIELD = 1 OR someFIELD = 2 OR someFIELD = 3 ...或者MySQL会以编译器优化代码的方式优化SQL吗?编辑:更改AND到OR是因为评论中所述的原因。
查看完整描述

3 回答

?
慕田峪9158850

TA贡献1794条经验 获得超7个赞

返回结果的总数为10000次中的7264次。

SELECT * FROM item WHERE id = 1 OR id = 2 ... id = 10000

这个查询0.1239秒数

SELECT * FROM item WHERE id IN (1,2,3,...10000)

这个查询0.0433秒数

INOR


查看完整回答
反对 回复 2019-06-24
?
慕容708150

TA贡献1831条经验 获得超4个赞

我认为两者之间的距离会更快,因为它应该转换为:

Field >= 0 AND Field <= 5

我的理解是,IN将被转换成一组OR语句。IN的价值在于易用性。(节省了多次输入每个列名的次数,并且使用现有逻辑更容易-您不必担心和/或优先级,因为IN是一条语句。使用一组OR语句,您必须确保用圆括号包围它们,以确保将它们作为一个条件进行计算。)

你的问题唯一真正的答案是分析查询..然后你就会知道什么在你的特殊情况下最有效。


查看完整回答
反对 回复 2019-06-24
  • 3 回答
  • 0 关注
  • 1622 浏览
慕课专栏
更多

添加回答

举报

0/150
提交
取消
意见反馈 帮助中心 APP下载
官方微信