SQL IN 與 =:效能差異
概述:
SQL IN
運算子檢查指定清單中是否存在某個值。 但是,與 IN
運算子相比,使用 =
時效能可能會受到顯著影響,尤其是在某些情況下。
問題:
特定的 SQL 查詢證明使用 IN
和 =
之間存在顯著的效能差異,即使 IN
僅比較單一值也是如此。
根本原因:
效能瓶頸源自於MySQL最佳化缺陷。 MySQL 錯誤地將 IN
子句中的子查詢分類為 依賴 子查詢,而不是 獨立 子查詢。
依賴子查詢與獨立子查詢:
這種錯誤分類非常嚴重。依賴子查詢對外部查詢中的每一行重複執行,極大地影響效能。 另一方面,獨立子查詢僅執行一次,並且其結果被快取以提高效率。
簡化分析:
原始查詢的簡化版本複製了效能問題,確認 IN
子句的子查詢被視為依賴項,導致執行速度變慢。
解:
MySQL 將子查詢類型錯誤識別為依賴型是使用 IN
時效能下降的根源。 此問題在 MySQL 5.6.x 及更高版本中已解決。
以上是為什麼比較單一值時我的 SQL IN 條件比「=」慢?的詳細內容。更多資訊請關注PHP中文網其他相關文章!