EXISTS 句のサブクエリの最適化
SQL プログラミングでは、EXISTS 演算子はサブクエリが行を返すかどうかをチェックします。従来、開発者は EXISTS 句で SELECT * 構文を使用していました。ただし、パフォーマンスが向上すると主張して、代わりに SELECT 1 を使用することを推奨する人もいます。
答え:
主張されている利点に反して、Microsoft と SQL 標準の両方は、EXISTS 句の SELECT * によるパフォーマンスへの影響はないと述べています。 SQL Server はコンテキストを認識し、選択リストで指定された列に関係なく、NO DATA を返します。
比較して検証します:
これを確認するには、次のコード スニペットを検討してください:
<code class="language-sql">IF EXISTS (SELECT 1/0 FROM someothertable WHERE a_valid_clause )</code>
選択リストが意味のあるものであれば、ゼロ除算エラーが発生します。ただし、EXISTS は実際の結果セットを無視し、行の存在のみをチェックするため、正常に実行されます。
結論:
SQL Server では、EXISTS 句で SELECT * を使用するか SELECT 1 を使用するかに実質的な違いはありません。どちらの方法も、サブクエリ内の行の存在を確認するのに効果的です。開発者は、個人の好みやコードの読みやすさに基づいて、好みの構文を選択できます。
以上がSQL EXISTS 句の「SELECT 1」は「SELECT *」よりもパフォーマンスが向上しますか?の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。