下面是我的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