可以使用以下查询吗?性能如何?
select * from table where id not in ( 2000 or much more ids here)
Run Code Online (Sandbox Code Playgroud)
我的初始测试非常快,但我想这是因为我是唯一正在使用服务器的人.
如果你有一个索引,它可以非常快.
然而,MySQL中存在一个错误(可能在MySQL 5.5中修复),如果没有索引,它将不会很慢,它将非常慢.这是因为子查询可以被检测为DEPENDENT SUBQUERY(相关子查询),即使它不是.您可以通过运行EXPLAIN SELECT ...并检查key子查询的非NULL 来查看MySQL是否使用了正确的查询计划.我已经发布了另一篇有关此错误的帖子,其中包含更多细节
您还可以考虑重写您的查询以使用JOIN而不是IN避免此错误.