ホームページ >データベース >mysql チュートリアル >SQL の WHERE 句はショートサーキット評価を保証しますか?
SQL WHERE 句: 短絡評価 – 神話か現実?
SQL の WHERE
句にはブール式の評価が含まれます。 疑問が生じます。それは、結果が確実になったら評価を停止する短絡を採用しているのでしょうか?これはクエリの最適化とパフォーマンスに大きな影響を与えます。
短絡: 保証されていますか?
ANSI SQL 2003 標準は、WHERE
句式の一般的な左から右の評価順序を示しています。 ただし、実際の 評価順序は実装に依存することが明示的に述べられています。 各データベース管理システム (DBMS) には、ブール式評価のための独自の最適化戦略があります。
DBMS 固有の動作
データベース システムが異なれば、これの処理方法も異なります。
具体例
次の WHERE
節について考えてみましょう:
<code class="language-sql">SELECT * FROM Table t WHERE @key IS NULL OR (@key IS NOT NULL AND @key = t.Key)</code>
@key
が NULL
の場合、最初の条件 (@key IS NULL
) が true になります。 ANSI 標準では、2 番目の条件 (@key IS NOT NULL AND @key = t.Key
) の評価は DBMS に委ねられています。
結論: SQL WHERE
節におけるショートサーキットの存在と動作は標準化されていません。 正しさを信頼するのは危険です。開発者は、特定の DBMS ドキュメントを参照し、実証的テストを実施して実際の評価動作を決定する必要があります。
以上がSQL の WHERE 句はショートサーキット評価を保証しますか?の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。