首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >执行"where id in(ids)"?

问执行"where id in(ids)"?
EN

Stack Overflow用户
提问于 2011-03-20 16:34:22
回答 1查看 1.8K关注 0票数 5

可以使用以下查询吗?性能如何?

代码语言:javascript
复制
select * from table where id not in ( 2000 or much more ids here)

我的初始测试进行得非常快,但我猜这是因为我现在是唯一使用服务器的人。

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2011-03-20 16:39:48

如果你有一个索引,它可以非常快。

然而,在MySQL中有一个bug (可能在MySQL 5.5中修复了),如果没有索引,它不仅会很慢,而且会非常慢。这是因为即使不是,子查询也可以被检测为DEPENDENT SUBQUERY (相关子查询)。您可以通过运行EXPLAIN SELECT ...并检查子查询的key是否不为NULL来查看MySQL是否使用了正确的查询计划。我已经写了另一篇关于这个bug的文章,有更多的细节:

您还可以考虑重写查询,以使用JOIN而不是IN来避免此错误。

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

https://stackoverflow.com/questions/5367488

复制
相关文章

相似问题

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