我有這樣的說法:SQL語句 - 優化
SELECT *
FROM sgtn
WHERE sgtn_kun_id IN (SELECT DISTINCT kun_id
FROM sgtn, kun
WHERE kun.kun_e_mail IN (LONG LIST OF EMAILS)
AND sgtn_kun_id = kun_id)
AND sgtn_strasse IN (SELECT sgtn.sgtn_strasse
FROM sgtn
WHERE sgtn_kun_id IN (SELECT DISTINCT kun_id
FROM sgtn, kun
WHERE kun.kun_e_mail IN (LONG LIST OF EMAILS)
AND sgtn_kun_id = kun_id)
GROUP BY sgtn.sgtn_strasse
HAVING COUNT(sgtn_strasse) > 2);
LONG LIST OF EMAILS
是即: '[email protected]', '[email protected]', 。 。 。 '[email protected]'
正如你所看到的,我在這個查詢中重複了一部分subquerys。
我想知道是否以及如何取代LONG LIST OF EMAILS
。它發生在我的陳述中兩次。是否有可能編輯此查詢,以便提到的LONG LIST OF EMAILS
發生一次?
進行檢測更換你的子查詢的和IN與連接,就可以實現在這種情況下,相同的結果,並且是* *很多更有效。一旦你知道他們是如何工作的,也會更容易。 – dtech
另外:爲什麼這些電子郵件直接在您的查詢?它們不存儲在同一個數據庫中嗎?如果你的查詢應該檢索它們,不包含它們字面 – dtech
你能解釋什麼試圖返回使用上面的查詢? –