首页
学习
活动
专区
工具
TVP
发布
社区首页 >问答首页 >MYSQL OR vs IN性能

MYSQL OR vs IN性能
EN

Stack Overflow用户
提问于 2009-04-24 02:16:53
回答 7查看 88.2K关注 0票数 198

我想知道在性能方面有没有什么不同

代码语言:javascript
复制
SELECT ... FROM ... WHERE someFIELD IN(1,2,3,4)

SELECT ... FROM ... WHERE someFIELD between  0 AND 5

SELECT ... FROM ... WHERE someFIELD = 1 OR someFIELD = 2 OR someFIELD = 3 ... 

或者,MySQL会以编译器优化代码的方式优化SQL吗?

编辑:出于评论中所述的原因,将AND更改为OR

EN

回答 7

Stack Overflow用户

发布于 2011-10-19 16:44:08

我还为未来的谷歌人做了一个测试。返回结果总数为7264条(满分10000条)

代码语言:javascript
复制
SELECT * FROM item WHERE id = 1 OR id = 2 ... id = 10000

此查询耗时0.1239

代码语言:javascript
复制
SELECT * FROM item WHERE id IN (1,2,3,...10000)

此查询耗时0.0433

INOR快3倍

票数 70
EN

Stack Overflow用户

发布于 2009-04-23 19:13:21

这取决于您正在做什么;范围有多广,数据类型是什么(我知道您的示例使用了数字数据类型,但您的问题也可以适用于许多不同的数据类型)。

这是一个希望以两种方式编写查询的实例;让它正常工作,然后使用EXPLAIN找出执行差异。

我确信这个问题有一个具体的答案,但这就是我如何,实际上,找出我给定问题的答案。

这可能会有一些帮助:http://forge.mysql.com/wiki/Top10SQLPerformanceTips

致以敬意,

弗兰克

票数 14
EN

Stack Overflow用户

发布于 2011-03-14 22:54:03

我认为对search观察到的一种解释是,如果in语句中的值都是静态值,则MySQL实际上会对这些值进行排序,并使用二进制搜索,这比普通的OR替代方法更有效。我不记得我在哪里读到的,但圣汐的结果似乎是一个证据。

票数 7
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/782915

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档