Count(*) または Count(1) または Count([column]) は、おそらく SQL Server で最もよく使用される集計関数です。実際、多くの人はこれら 3 つを区別できません。この記事では、これら 3 つの背後にある機能、関係、原則について説明します。 過去には、パフォーマンスを向上させるために Count(*) ではなく Count(1) を使用するという、いわゆる最適化の提案をよく目にしました。その理由は、Count(*) を使用するとテーブル全体がスキャンされるからです。実際には、Count をどのように記述しても違いはありません。 Count(1) と Count(*) は、実際には Count() 内の式が NULL かどうか評価されることを意味します。NULL の場合はカウントされませんが、NULL でない場合はカウントされます。たとえば、コード 1 に示すように、Count に NULL が指定されています (オプティマイザーでは NULL を明示的に指定できないため、指定するには変数に割り当てる必要があります)。 宣言 @xx INT SET @xx=NULL [AdventureWorks2012].[Sales].[SalesOrderHeader] から COUNT(@xx) を選択します。 コードリスト 1. Count に NULL が指定されています。すべての行が NULL なので、結果はまったくカウントされません。当然、結果は 0 になります。 したがって、Count(*)、Count(1)、Count('anything') のいずれかを指定すると、次の図に示すように、これらの値はいずれも NULL ではないため、結果は同じになります。 Count に NULL 以外の式を指定する限り、結果は変わりません。 結果だけを見ると、 テーブルに主キーがない場合、count(1) は count(*) よりも高速です。テーブルに主キーがある場合、主キーをカウント条件として使用すると count(primary key) が最も高速になります。 テーブルにフィールドが 1 つしかない場合は、count(*) が最も高速です。 count(*) と count(1) の結果は同じで、どちらも NULL 統計が含まれますが、count(column) には NULL 統計は含まれません。 1. select 1 と select * の違い select constant from ... すべての行に対して、常に定数という 1 つの値のみが返されます。したがって、通常は、存在するかどうかを判断するためにのみ使用されます (exists 句など)。 Select * from ... は、すべての行のすべての列を返します。 パフォーマンスの違いは、from 句と where 句によって異なります。たとえば、where 条件にインデックスを付けることができる場合、select 1 from ... の方が select * from ... よりも明らかにパフォーマンスが優れています。 2. select sum(1)の使用
ただし、sum() には負の数や浮動小数点数を含む任意の数値を渡すことができ、返される値は渡された値 n * 条件を満たすレコードの数 m になります。 要約する 以上がこの記事の全内容です。この記事の内容が皆様の勉強や仕事に何らかの参考学習価値をもたらすことを願います。123WORDPRESS.COM をご愛顧いただき、誠にありがとうございます。これについてもっと知りたい場合は、次のリンクをご覧ください。 以下もご興味があるかもしれません:
|
<<: Windows 10 での Tomcat のインストールと展開に関する詳細なチュートリアル
>>: Vue3+el-tableは行と列の変換を実現します
1. フローティング方式を使用する効果画像: コードは次のとおりです: (.content の高さは...
一つの目的Html ページでローカル フォルダーを選択すると、フォルダーとそのサブフォルダー内のすべ...
言語では、DSL を実装するためにマクロがよく使用されます。マクロを使用すると、開発者は JSX 構...
会社が現在使用しているソリューションを確認するためにバックエンドにログインしました。使用される FT...
Drop-shadow と box-shadow はどちらも影効果(ハロー効果)のための CSS プ...
先ほど、Docker を使用して SpringBoot プロジェクトを簡単にデプロイし、Docker...
この記事では、参考までに、NFC読み取り機能を実装するためのuni-appの具体的なコードを紹介しま...
まず依存関係をダウンロードします yarn sass-loader ノード sass を追加します次...
1. カラーマッチング効果のプレビュー下の GIF に示すように、ボタンの背景色が徐々に薄くなると...
使用シナリオ:プロジェクトのページでは、頻繁に変更されず、個別のカスタマイズも伴わない大量のデータを...
MySQL では、データベースの文字化けは一般的に文字セットを設定することで修正できますが、文字化け...
Dockerfile を作成するときは、コンテナが起動する前に初期化構成やカスタム構成を実行するため...
MongoDB を起動すると、プロンプトは次のようになります。共有ライブラリのロード中にエラーが発...
<br />このタグを使用すると、画面上に水平線を表示して、ページのさまざまな部分を区切...
最近、サーバー上のアカウントが2つハッキングされ、パスワードが改ざんされました。幸い、まだ使えるアカ...