ホームページ >データベース >mysql チュートリアル >SQL Server の Count(*) と Count(1): 本当にパフォーマンスが優れているのはどちらですか?

SQL Server の Count(*) と Count(1): 本当にパフォーマンスが優れているのはどちらですか?

Linda Hamilton
Linda Hamiltonオリジナル
2025-01-23 18:44:13679ブラウズ

Count(*) vs. Count(1) in SQL Server: Does One Really Perform Better?

*SQL Server における COUNT() と COUNT(1) のパフォーマンスの違い: 詳細な分析**

SQL Server での COUNT() と COUNT(1) の使用については長い間議論がありました。どちらのクエリの目的もテーブル内の行数をカウントすることですが、一部の開発者は COUNT(1) の方が COUNT() よりもパフォーマンスが高いと考えています。

2 つの違いを深く理解する

COUNT() と COUNT(1) の主な違いは、カウントする式です。 COUNT() 特定の列にデータが含まれているかどうかに関係なく、テーブル内の行数をカウントします。対照的に、COUNT(1) は、指定された列内のリテラル「1」の出現数をカウントします。

パフォーマンス分析

Microsoft のドキュメントと実証テストによると、SQL Server の COUNT(*) と COUNT(1) の間にパフォーマンスに大きな違いはありません。オプティマイザは、これら 2 つの式が同じに評価されることを認識し、それに応じてクエリを最適化します。

伝統的な概念の誤解

COUNT(1) のパフォーマンスが COUNT(*) よりも優れているという考えは、おそらく、この 2 つの間に実際のパフォーマンスの差があった、以前のバージョンの SQL Server またはその他のデータベース システムに由来しています。ただし、SQL Server の最新バージョンでは、この最適化は廃止されました。

COUNT(*) と COUNT(1) が同等であることを証明するには、次のクエリを考えてみましょう:

<code class="language-sql">SELECT COUNT(*) FROM dbo.table1;</code>

このクエリは次のクエリと同じ結果を返します:

<code class="language-sql">SELECT COUNT(1) FROM dbo.table1;</code>

結論

SQL Server では COUNT(*) と COUNT(1) の両方を使用して行をカウントできますが、どちらかを使用してもパフォーマンス上の利点はありません。開発者は、クエリの特定の要件に最も適した式を選択することをお勧めします。

以上がSQL Server の Count(*) と Count(1): 本当にパフォーマンスが優れているのはどちらですか?の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。

声明:
この記事の内容はネチズンが自主的に寄稿したものであり、著作権は原著者に帰属します。このサイトは、それに相当する法的責任を負いません。盗作または侵害の疑いのあるコンテンツを見つけた場合は、admin@php.cn までご連絡ください。