下面是我的SQL代码:为什么SQL“NOT IN”太慢?
select count(1)
from customers
where id in(
select custid
from accounts
where sid in(72,73,74,75,76,77,78,79)
)
and id not in(
select custid
from accounts
where sid in(80,81)
);
表都编入索引。此代码是否可以重写以获得更好的性能?
请** [编辑] **您的问题,并添加所涉及的表(包括所有索引),您正在使用的查询和生成的执行计划的'create table'语句**解释(分析,详细)**。 [**格式化文本**](http://stackoverflow.com/help/formatting)请(请确保您保留缩进),[无屏幕截图](http://meta.stackoverflow.com/questions/285551/why-may-i-not-upload-images-code-on-so-when-asked-question/285557#285557) –
可以在不改变结果的情况下移除NOT IN标准。请回顾一下您的问题。 –
@PatrickHonorez - 我读到它的方式,给定的id可能在帐户表中有多行。如果该表中的id同时具有sid = 72和sid = 80的情况,则不应该计数,因此需要NOT IN – kbball