我試圖做一個簡單的SQL查詢:提高查詢
SELECT DISTINCT id
FROM marketing
WHERE type = 'email'
AND id NOT IN (
SELECT id
FROM marketing
WHERE type = 'letter'
)
ORDER BY id;
這需要很長的時間來運行,我認爲它與在WHERE語句選擇做(有大量的ID),但我不能想出一個方法來改善它。
首先,這可能是查詢速度如此之慢的原因,其次是如何改進它的建議?
編輯:
數據庫系統:MySQL的
標識被索引,但是卻並不在此表的主鍵;它是一個外鍵。
你的表有多大,'type'有索引? – nacholibre 2013-05-09 19:59:03
'WHERE type ='email''和'WHERE type ='letter''似乎是多餘的。你基本上說類型必須是「電子郵件」,但是再次檢查它不是「字母」。你不能只拿出嵌套的SELECT? – 2013-05-09 19:59:36
整個'不在'位似乎是多餘的。如果你用'type ='email''找到了一條記錄,那麼它怎麼可能在'type ='letter''的記錄列表中呢? – 2013-05-09 20:00:17