*SQL Server: Count() と Count(1) – パフォーマンス分析**
多くの SQL ユーザーは、COUNT(*)
と COUNT(1)
のパフォーマンスの違いについて疑問に思っています。 どちらの関数も行をカウントしますが、実際のパフォーマンスへの影響はありますか?
SQL Server (特に 2005 以降のバージョン) では、答えは簡単です。パフォーマンスに大きな違いはありません。
Microsoft のドキュメントでは、COUNT(*)
がテーブル内のすべての行 (または指定された条件を満たす行) をカウントすることを明確にしています。 重要なのは、COUNT(1)
('1' は非 null 式であるため) が同じ結果を生成することです。
SQL Server クエリ オプティマイザーは、これと同等であることを認識します。 両方の関数を同じように扱うため、同じ実行計画、I/O 操作、そして最終的にはパフォーマンスが得られます。
次の例を考えてみましょう:
<code class="language-sql">SELECT COUNT(1) FROM dbo.tab800krows; SELECT COUNT(1), FKID FROM dbo.tab800krows GROUP BY FKID; SELECT COUNT(*) FROM dbo.tab800krows; SELECT COUNT(*), FKID FROM dbo.tab800krows GROUP BY FKID;</code>
これらのクエリを実行すると同じ結果が得られ、COUNT(*)
と COUNT(1)
の機能が同等であることが確認されます。 したがって、どちらを選択するかは主にコーディング スタイルまたは個人的な好みの問題になります。 SQL Server のクエリ パフォーマンスには影響しません。
以上がSQL Server の Count(*) と Count(1): パフォーマンスに違いはありますか?の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。