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はサイドナビゲーションテキストスケルトン効果コンポーネントをカプセル化します

推薦する

ブルートフォース攻撃を防ぐためのシェルスクリプト設定

シェルスクリプトはアクセス制御を設定し、複数回のログイン失敗後にIPをブロックしてSSHのブルートフ...

Ubuntu 18.04 に Anaconda3 をインストールするための詳細なチュートリアル

Anaconda は、conda、Python、およびそれらの依存関係など、180 を超える科学パッ...

Dockerでボリュームを管理する2つの方法

前回の記事では、Dockerの基礎知識であるローカルディレクトリのマウント方法を紹介しました。今日は...

CSV、Excel、SQL ファイルを MySQL にインポートするためのヒント

1. csvファイルをインポートする次のコマンドを使用します。 1.mysql> infile...

LayUI+Shiroは動的なメニューを実装し、メニュー拡張の例を記憶します

目次1. Maven 依存関係2. メニュー関連クラス1. メインメニュー2. サブメニュー3. S...

MySQLセグメンテーション関数substring()の具体的な使用法

MySQL には、主に left()、right()、substring()、substring_i...

Docker プライマリ ネットワーク ポート マッピング構成

ポートマッピングDocker コンテナを起動する前にポート マッピングを行わないと、コンテナ外部のネ...

MySQL の日付と時刻関数の概要 (MySQL 5.X)

1. MySQLは現在の日付と時刻を取得する関数1.1 現在の日付 + 時刻 (日付 + 時刻) ...

MySQL での Truncate の使用法の詳細な説明

序文:テーブルをクリアしたいときは、truncate ステートメントをよく使用します。ほとんどの場合...

一般的なDocker Composeコマンドの詳細な説明

1. Docker Compose の使用方法は docker コマンドの使用方法と非常に似ています...

Docker の Windows ストレージ パス設定操作

Windows 10 に Docker をインストールする場合、コンテナタイプを Linux コンテ...

vue-resource インターセプターの使用に関する詳細な説明

序文インターセプター最近のフロントエンド フレームワークでは、インターセプターは基本的に非常に基本的...

リアクトルーティングガード(ルーティングインターセプション)の実装

React は Vue とは異なります。ルートにメタ文字を設定することでルートインターセプションを実...

Linux でネットワーク パケット損失と遅延をシミュレートする方法

netem と tc: netem は、Linux カーネル バージョン 2.6 以降で提供されるネ...

Echatsチャートの大画面適応を実装する方法

目次説明する成し遂げるプロジェクトのディレクトリ構造は次のとおりです。効果図は以下のとおりです要約す...