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 句の先頭に配置されます。この条件は、後続の条件で評価する必要がある行の数を効果的に絞り込みます。
2 番目のクエリでは、条件の順序が逆になります。会社フィールドに基づいてフィルタリングする条件は、他の条件の後に評価されます。
データの分布によっては、条件の順序がパフォーマンスに影響を与える可能性があります。結果セットを大幅に削減する条件を WHERE 句の先頭に配置することで、MySQL はそれを早期に適用し、その条件を満たさない行に対する後続の条件の評価を回避できます。
この最適化は「短い」と呼ばれます。 -巡回中。」特定の行に対して最初の条件が false と評価された場合、MySQL は残りの条件を評価せずにその行をすぐに破棄します。
ただし、この最適化は常に適用できるわけではないことに注意することが重要です。すべての条件の選択性が同様である場合、条件の順序はパフォーマンスに大きな影響を与えない可能性があります。
条件の最適な順序を決定するには、次の要素を考慮してください。
以上がWHERE 句の条件順序は MySQL クエリのパフォーマンスにどのような影響を与えますか?の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。