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