首頁 >資料庫 >mysql教程 >WHERE 子句條件排序如何影響 MySQL 查詢效能?

WHERE 子句條件排序如何影響 MySQL 查詢效能?

Barbara Streisand
Barbara Streisand原創
2024-12-24 09:24:13229瀏覽

How Does WHERE Clause Condition Ordering Impact MySQL Query Performance?

Where 子句條件排序與MySQL 效能

在查詢包含大量條件且特定條件顯著縮小結果集的場景中, WHERE子句中的條件順序會影響MySQL 效能。

請考慮以下內容場景:

SELECT * FROM clients WHERE
(firstname LIKE :foo OR lastname LIKE :foo OR phone LIKE :foo) AND
(firstname LIKE :bar OR lastname LIKE :bar OR phone LIKE :bar) AND
company = :ugh;
SELECT * FROM clients WHERE
company = :ugh AND
(firstname LIKE :foo OR lastname LIKE :foo OR phone LIKE :foo) AND
(firstname LIKE :bar OR lastname LIKE :bar OR phone LIKE :bar);

第一個查詢中,根據公司欄位進行過濾的條件放在WHERE子句的開頭。此條件有效地縮小了後續條件需要評估的行數。

在第二個查詢中,條件的順序相反。基於公司欄位過濾的條件在其他條件之後進行評估。

根據資料的分佈,條件的順序可能會影響效能。透過將顯著減少結果集的條件放在 WHERE 子句的開頭,MySQL 可以儘早應用它,並避免評估不符合該條件的行的後續條件。

這種最佳化稱為「短」 -電路。 「如果給定行的開頭條件評估為 false,MySQL將立即丟棄該行,而不評估其餘條件。會對性能產生重大影響。 >查詢執行計劃和時序

以上是WHERE 子句條件排序如何影響 MySQL 查詢效能?的詳細內容。更多資訊請關注PHP中文網其他相關文章!

陳述:
本文內容由網友自願投稿,版權歸原作者所有。本站不承擔相應的法律責任。如發現涉嫌抄襲或侵權的內容,請聯絡admin@php.cn