*EXISTS 句の SELECT 1 および SELECT : SQL Server のパフォーマンスの違いの分析**
SQL Server では、EXISTS 演算子を含むサブクエリを使用するときに SELECT 1 を使用するか SELECT * を使用するかについて常に議論されます。 SELECT 1 の方が効率的だと考える人もいますが、実際にパフォーマンスの差は大きいのでしょうか?
結論:
Microsoft のドキュメントと ANSI SQL 標準によると、EXISTS 句で SELECT 1 を使用するか SELECT * を使用するかに実質的な違いはほとんどありません。 SQL Server は両方の形式に最適化されており、それらを同等のものとして解釈します。
理由:
EXISTS 句では、サブクエリの唯一の目的は、指定された基準を満たす行があるかどうかを判断することです。選択リストの結果はシステムによって破棄されます。したがって、SELECT 1 を指定しても SELECT * を指定しても、パフォーマンスへの影響はわずかです。
例:
次のクエリを考えてみましょう:
<code class="language-sql">IF EXISTS (SELECT 1 FROM sometable WHERE a_valid_clause) BEGIN ... END</code>
サブクエリでリテラル 1 が選択された場合でも、それに対して数学的演算は実行されないため、ゼロ除算 (1/0) が存在してもエラーは発生しません。
概要:
一貫性や明確さのために SELECT 1 を使用することもできますが、SQL Server で EXISTS 演算子を使用する場合、実際のパフォーマンス上の利点は得られません。
以上がEXISTS 句の SELECT 1 と SELECT *: SQL Server のパフォーマンスに影響しますか?の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。