count(1)、count(*)、count(列名)の実行の違いの詳細な説明

count(1)、count(*)、count(列名)の実行の違いの詳細な説明

実施効果:

1. count(1) と count(*)

テーブル内のデータ量が多い場合、テーブルを分析した後、count(1) を使用すると count(*) を使用するよりも時間がかかります。

実行プランから見ると、count(1)とcount(*)は同じ効果があります。 ただし、テーブルを分析すると、count(1) は count(*) よりも時間がかかりません (10,000 項目以内のデータの場合) が、その差はそれほど大きくありません。

count(1) がクラスター化インデックス id である場合、count(1) の方が確実に高速になります。しかし、その差は非常に小さいです。

count(*) は自動的にそのフィールドに合わせて最適化されるためです。したがって、count(1) を使用する必要はなく、count(*) を使用してください。SQL が最適化に役立ちます。したがって、count(1) と count(*) の間には基本的に違いはありません。

2. count(1) と count(フィールド)

両者の主な違いは

(1) count(1)は、フィールドがnullのレコードも含め、テーブル内のすべてのレコードの数をカウントします。

(2)count(field)は、フィールドがnullの場合は無視して、テーブル内でフィールドが出現する回数をカウントします。つまり、フィールドが null のレコードはカウントされません。

count(*)とcount(1)とcount(列名)の違い

実行効果:

count(*) にはすべての列が含まれ、行数に相当します。結果をカウントする際、NULL 値を持つ列の値は無視されません。
count(1)は、すべての列を無視し、1を使用してコード行を表し、結果をカウントするときにNULL値を持つ列値を無視しません。
count(列名)には列名のみが含まれます。結果をカウントする際、空の列値(ここでの空は空の文字列や0ではなく、nullを意味します)の数は無視されます。つまり、フィールド値がNULLの場合、カウントされません。

実行効率:
列名が主キーの場合、count(列名)はcount(1)よりも高速になります。
列名が主キーでない場合は、count(1)はcount(列名)よりも高速になります。
テーブルに複数の列があり、主キーがない場合は、count(1) の方が count(*) よりも効率的です。
主キーがある場合、選択カウント(主キー)の実行効率は最高です
テーブルにフィールドが 1 つしかない場合は、select count(*) が最適です。

分析例

mysql> counttestテーブルを作成します(name char(1), age char(2));
クエリは正常、影響を受けた行は 0 行 (0.03 秒)

mysql> counttest の値に挿入
  -> ('a', '14'),('a', '15'), ('a', '15'), 
  -> ('b', NULL)、('b', '16')、 
  -> ('c', '17'),
  -> ('d', null)、 
  ->('e', '');
クエリは正常、8 行が影響を受けました (0.01 秒)
記録: 8 重複: 0 警告: 0

mysql> counttest から * を選択します。
+------+------+
| 名前 | 年齢 |
+------+------+
| 14 |
| 15 |
| 15 |
| b | NULL |
| 16 |
| 17 |
| d | NULL |
| 電子 | |
+------+------+
セット内の行数は 8 です (0.00 秒)

mysql> 名前、count(name)、count(1)、count(*)、count(age)、count(distinct(age)) を選択します。
  -> counttest から
  -> 名前でグループ化します。
+------+-------------+-----------+-----------+-----------+----------------------+
| 名前 | count(名前) | count(1) | count(*) | count(年齢) | count(distinct(年齢)) |
+------+-------------+-----------+-----------+-----------+----------------------+
| 1 | 3 | 3 | 3 | 3 | 2 |
| 2 | 2 | 2 | 1 | 1 |
| 1 | 1 | 1 | 1 | 1 |
| 1 | 1 | 1 | 0 | 0 |
| 1 | 1 | 1 | 1 | 1 |
+------+-------------+-----------+-----------+-----------+----------------------+
セット内の行数は 5 です (0.00 秒)

追加参考資料: http://blog.csdn.net/lihuarongaini/article/details/68485838

これで、count(1)、count(*)、count(列名)の違いについての説明は終了です。count(1)、count(*)、count(列名)の詳細については、123WORDPRESS.COM の以前の記事を検索するか、以下の関連記事を引き続き参照してください。今後とも 123WORDPRESS.COM をよろしくお願いいたします。

以下もご興味があるかもしれません:
  • select count() と select count(1) の違いと実行方法
  • MySQL における count(*)、count(1)、count(col) の違いのまとめ
  • Select count(*)、Count(1)、Count(column)の違いと実行方法
  • SQL Server における Select count(*) と Count(1) の違いと実行方法

<<:  同じドメイン名を持つ Nginx プロキシのフロントエンドとバックエンドの分離プロジェクトの完全な手順

>>:  Vue3はサイドナビゲーションテキストスケルトン効果コンポーネントをカプセル化します

推薦する

画像の色を変更するための純粋なCSS

画像の色を変更するための CSS テクニックは非常にシンプルです。具体的なコードは次のとおりです。ヒ...

MySQL 8.0.24 のインストールと設定方法のグラフィックチュートリアル

この記事では、MySQL 8.0.24のインストールチュートリアルを参考までに紹介します。具体的な内...

静的リソースファイルのアクセスログをフィルタリングするNginxの実装

乱雑なログ日常的に使用される Nginx は、静的リソース サーバーとリバース プロキシ サーバーの...

写真とテキストによる MySQL 8.0.21 インストール チュートリアル

1. ダウンロードリンクをダウンロードするダウンロードをクリックします。Oracle アカウントにロ...

DockerにElasticsearch7.6クラスタをインストールしてパスワードを設定する方法

目次基本的な設定バージョンとDockerイメージについて始めるelasticsearch.ymlにつ...

React 合成イベントの説明

目次入力ボックスをクリックして開始します拡張機能入力ボックスをクリックすると複数のイベントが発生しま...

JavaScript でアルゴリズムの複雑さを学ぶ方法

目次概要Big O 表記法とは何ですか?オー(1)の上) (n^2) O(logn) ですの上!)結...

React NativeプロジェクトでLottieアニメーションを使用する方法

Lottie は、Airbnb が開発した iOS、Android、React Native 向けの...

同じ日の最初の3つのデータを取得するためのMySQLタイムラインデータ

テーブルデータを作成する テーブル `praise_info` を作成します ( `id` bigi...

React+Amapは緯度と経度をリアルタイムで取得し、住所を特定します

目次1. マップを初期化する2. マップポイント3. 位置決めを有効にする4. マップの変更を監視す...

事例を通してLinux NFSの仕組みを詳細に分析

前回の記事に引き続き、web02 サーバーを作成し、web01 サーバーと web02 サーバーの ...

レスポンシブフレームワークのテーブルヘッダーの自動改行問題に対する簡単な解決策

最近、Bootstrap を使って Web サイトを開発しています。表を処理していたところ、PC で...

MySQL でよく使われる連結文のまとめ

はじめに: MySQL では、CONCAT() 関数を使用して複数の文字列を 1 つの文字列に連結し...

MySQL遅延レプリケーションライブラリ方式の詳細な説明

簡単に言えば、遅延レプリケーションとは、スレーブ データベースがマスター データベースより 1 時間...

Redhat 8.0 システムのインストール方法に関するグラフィック チュートリアル (初心者には必須)

目次1. はじめに2. インストール01. 新しい仮想マシンを作成する02. システムをインストール...