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

推薦する

Dockerでの接続例外中のエラーを解決する

Docker を初めて使い始めると、通常とは異なる問題に遭遇して、必然的に混乱してしまいます。大丈夫...

アクセス速度を上げるためにウェブサイトを最適化する方法の更新

最近、同社はitpubを皮切りに、コーポレートウェブサイト傘下の全サイトの評価を開始した。そのために...

Gearman + MySQL による永続化操作例

この記事では、gearman+mysql メソッドを使用して永続化操作を実装します。ご参考までに、詳...

バックエンドの権限に基づいてナビゲーション メニューを動的に生成する Vue-router のサンプル コード

目次js の1. グローバルガードを登録する2. Vuex 状態管理グローバルキャッシュルート3. ...

MySQLインデックスの作成について知っておくべきこと

目次序文: 1. インデックスメソッドを作成する2. インデックスを作成するために必要な権限序文: ...

Vue3.0はチェックボックスコンポーネントのカプセル化を実装します

この記事では、チェックボックスコンポーネントのカプセル化を実装するためのvue3.0の具体的なコード...

Pure CSS と Flutter はそれぞれブリージング ライト効果を実現します (サンプル コード)

前回、非常に熱心なファンから、月を呼吸する光の効果にできるかどうか尋ねられました。月の大きさの写真が...

jQueryはフォーム検証機能を実装します

jQuery フォーム検証の例 / ユーザー名、パスワード、住所、電子メールの検証を含む下記の通り ...

純粋な CSS でカスタムラジオボタンとチェックボックス機能を実装する

1. 効果を達成する 2 知識ポイント2.1 <label> タグHTML では、<...

HTML でスタイルを使用して属性を追加する例

必要なリンクにインライン スタイルを追加します。コードをコピーコードは次のとおりです。 <a ...

Zabbix を使用して Nginx/Tomcat/MySQL を監視する方法の詳細なチュートリアル

目次ZabbixはNginxを監視するZabbixはTomcatを監視するZabbixはMySQLを...

Linux の cut コマンドの説明

Linux や Unix の cut コマンドは、ファイルの各行から一部を切り取って標準出力に出力す...

MySQL テーブル結合クエリでグループ化と重複排除を実装する例

目次ビジネスロジックデータテーブル構造クエリロジックSQL スクリプトスクリプトの説明ビジネスロジッ...

Vue-Element-Adminはログインジャンプを実現するために独自のインターフェースを統合しています

1. まずリクエスト設定ファイルを見て、axios.createメソッドを見てください。baseUR...

Tomcat コアコンポーネントとアプリケーションアーキテクチャの詳細な説明

目次Web コンテナとは何ですか? HTTP の性質HTTP リクエスト応答の例クッキーとセッション...