我有一個查詢:爲什麼在查詢中使用IN(或NOT IN)子句使得它很慢
SELECT DISTINCT field1 FROM table1 WHERE field2 = something
(表1中包含100萬條記錄,執行時間:0.106sec,返回20條記錄)
另一個查詢
SELECT DISTINCT similarField1 FROM table2 WHERE similarField2 = somethingElse
(表2中含有半萬條記錄,執行時間:0.078sec,回報率:20條)
現在,如果我運行一個查詢,通過上述兩種組合:
SELECT DISTINCT field1 FROM table1 WHERE field2 = something AND field1 NOT IN (SELECT DISTINCT similarField1 FROM table2 WHERE similarField2 = somethingElse)
但這並沒有給出結果,即使運行了10分鐘。爲什麼它變得非常緩慢,什麼可能是一個潛在的解決方案。
編輯:我使用的是MySQL與DBVisualizer中6.5
這是什麼,MySql或MS SQL服務器? – 2015-02-09 10:13:03
MySQL,對不起刪除sql-server標籤 – 2015-02-09 10:14:31
因爲MySQL很慢。你可以試着'LEFT JOIN'這兩個選擇,只返回那些沒有匹配的行。 (leftjoinedquery.field1爲空)。 – GolezTrol 2015-02-09 10:15:57