MySQL 查詢最佳化工具具有不同的策略可用於評估子查詢
對於與 IN、= ANY 或 EXISTS 述詞一起使用的子查詢,最佳化工具具有以下選擇
IN
= ANY
EXISTS
半聯結
實體化
EXISTS 策略
對於與 NOT IN、<> ALL 或 NOT EXISTS 述詞一起使用的子查詢,最佳化工具具有以下選擇
NOT IN
<> ALL
NOT EXISTS
對於衍生表,最佳化工具具有以下選擇(也適用於視圖參考和共通表表達式)
將衍生表合併到外部查詢區塊中
將衍生表實體化為內部暫存資料表
以下討論提供了有關上述最佳化策略的更多資訊。
對使用子查詢修改單一資料表的 UPDATE 和 DELETE 語句的限制是,最佳化工具不會使用半聯結或實體化子查詢最佳化。作為一種變通方法,請嘗試將它們重寫為使用聯結而不是子查詢的多資料表 UPDATE 和 DELETE 語句。
UPDATE
DELETE