ホームページ >データベース >mysql チュートリアル >WHERE 句の条件順序は MySQL クエリのパフォーマンスにどのように影響しますか?
WHERE 句の条件順序が MySQL パフォーマンスに与える影響
複数の条件を含む複雑なクエリを作成する場合、それらの条件の順序が潜在的に影響を与える可能性がありますMySQLのパフォーマンス。会社 ID によるフィルタリングなどの特定の条件を使用すると、検査される行数が大幅に減少する可能性があります。
質問:
条件の順序が異なる次の 2 つのクエリについて考えてみましょう。
クエリ 1:
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
クエリ2:
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)
これらの条件の順序は MySQL の効率に影響しますか?
答え:
WHERE 句の条件の順序は実際に影響を与える可能性があります特定の状況下での MySQL のパフォーマンス。次の例を考えてみましょう。
クエリ 3:
SELECT myint FROM mytable WHERE myint >= 3 OR myslowfunction('query #1', myint) = 1;
クエリ 4:
SELECT myint FROM mytable WHERE myslowfunction('query #2', myint) = 1 OR myint >= 3;
これらのクエリの唯一の違いは、OR 条件のオペランドの順序です。 。 「myslowfunction」は意図的に1秒遅らせる関数です。クエリの実行により、次のことがわかります。
これは、常に true とは限らないオペランドを持つ OR 条件の左側に遅い関数が現れると、その関数がより頻繁に実行されることを示しています。
結論:
要約すると、WHERE 句内の条件の順序は、次の理由により MySQL のパフォーマンスに影響を与える可能性があります。短絡します。パフォーマンスを最適化するには、検査される行数 (会社 ID など) を大幅に削減すると予想される条件を、条件チェーンのできるだけ早い段階に配置します。
以上がWHERE 句の条件順序は MySQL クエリのパフォーマンスにどのように影響しますか?の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。