ホームページ > データベース > mysql チュートリアル > WHERE 句の条件順序は MySQL クエリのパフォーマンスにどのように影響しますか?

WHERE 句の条件順序は MySQL クエリのパフォーマンスにどのように影響しますか?

Patricia Arquette
リリース: 2024-12-29 12:31:14
オリジナル
883 人が閲覧しました

How Does WHERE Clause Condition Ordering Affect MySQL Query Performance?

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秒遅らせる関数です。クエリの実行により、次のことがわかります。

  • クエリ 3: myslowfunction が 4 回呼び出される (myint 値 1、2、3、4)。
  • クエリ 4: myslowfunction が 7 回呼び出される ( myint 値 1、2、3、4、5、6、 7).

これは、常に true とは限らないオペランドを持つ OR 条件の左側に遅い関数が現れると、その関数がより頻繁に実行されることを示しています。

結論:

要約すると、WHERE 句内の条件の順序は、次の理由により MySQL のパフォーマンスに影響を与える可能性があります。短絡します。パフォーマンスを最適化するには、検査される行数 (会社 ID など) を大幅に削減すると予想される条件を、条件チェーンのできるだけ早い段階に配置します。

以上がWHERE 句の条件順序は MySQL クエリのパフォーマンスにどのように影響しますか?の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。

ソース:php.cn
このウェブサイトの声明
この記事の内容はネチズンが自主的に寄稿したものであり、著作権は原著者に帰属します。このサイトは、それに相当する法的責任を負いません。盗作または侵害の疑いのあるコンテンツを見つけた場合は、admin@php.cn までご連絡ください。
著者別の最新記事
人気のチュートリアル
詳細>
最新のダウンロード
詳細>
ウェブエフェクト
公式サイト
サイト素材
フロントエンドテンプレート