カウント(1)、カウント(*)、カウント(列名)の違い

1. count(1)およびcount(*)

テーブル内のデータ量が多い場合、テーブルを分析した後、count(*)よりもcount(1)の使用に時間がかかります! 
実行プランから、count(1)とcount(*)の効果は同じです。ただし、テーブルを分析した後、count(1)はcount(*)よりも時間がかかりません(データ量は1w未満です)が、それほど悪くはありません。 
 
count(1)がクラスター化インデックスidの場合、count(1)の方が確実に高速です。しかし、違いは非常に小さいです。 
count(*)のため、どのフィールドが自動的に最適化されます。したがって、count(1)に移動する必要はなく、count(*)を使用すると、sqlが最適化を完了するのに役立ちます。したがって、count(1)とcount(*)は基本的に同じです。 
 
2. count(1)とcount(field)
の主な違いは、
(1)count(1)は、nullフィールドを持つレコードを含む、テーブル内のすべてのレコードをカウントすることです。
(2)count(field)は、フィールドがnullの場合を無視して、フィールドがテーブルに表示される回数をカウントします。つまり、フィールドがnullのレコードはカウントされません。 
転載元:http://www.cnblogs.com/Dhouse/p/6734837.html


3.カウント(*)とカウント(1)およびカウント(列名)の違い  

実行効果に関して:  
count(*)には、行数に相当するすべての列が含まれます。結果をカウントする場合、列の値は無視されません。count  
(1)には、すべての列が無視されます。1はコード行を表します。 。結果が結果の場合、列の値は無視されません。  
カウント(列名)には列名のみが含まれます。統計結果では、列の値は無視されます(ここでの空の文字列は単なる空の文字列ではありません)または0、ただしnullを意味します)カウント。つまり、特定のフィールドの値がNULLの場合、カウントされません。

実行効率:  
列名が主キー、カウント数(列名)であるが、より速く、カウント(1)よりなり  
、カラム名は、カウント(列名)よりも速くなり、主キー、カウント数(1)ない  
テーブル場合複数の列があり、主キーがない場合、カウント(1)実行効率はカウント(*)よりも優れています。  
主キーがある場合、選択カウント(主キー)の実行効率が最適です。  
テーブルに1つしかない場合フィールドで、カウント(*)を選択するのが最適です。
転載元:http://eeeewwwqq.iteye.com/blog/1972576


ケース分析

mysql> create table counttest(name char(1)、age char(2));
クエリOK、影響を受けた0行(0.03秒)
 
mysql> counttest値に挿入
    ->( 'a'、 '14')、( 'a'、 '15')、( 'a'、 '15')、 
    -> ( 'b'、NULL)、( 'b'、 '16')、 
    ->( 'c'、 '17')、
    ->( 'd'、null)、 
    ->( 'e'、 '') ;
クエリOK、影響を受ける8行(0.01秒)
レコード:8重複:0警告:0
 
mysql> select * from counttest;
+ ------ + ------ +
| 名前| 年齢|
+ ------ + ------ +
| a | 14 |
| a | 15 |
| a | 15 |
| b | NULL |
| b | 16 |
| c | 17 |
| d | NULL |
| e | |
+ ------ + ------ +
セット内の8行(0.00秒)
 
mysql> select name、count(name)、count(1)、count(*)、count(age)、count(異なる(年齢))
    -> counttestから
    ->名前によるグループ;
+ ------ + ------------- + ---------- + ---------- + ------ ------ + ---------------------- +
| 名前| count(name)| count(1)| count(*)| count(年齢)| count(distinct(age))|
+ ------ + ------------- + ---------- + ---------- + ------ ------ + ---------------------- +
| a | 3 | 3 | 3 | 3 | 2 |
| b | 2 | 2 | 2 | 1 | 1 |
| c | 1 | 1 | 1 | 1 | 1 |
| d | 1 | 1 | 1 | 0 | 0 |
| e | 1 | 1 | 1 | 1 | 1 |
+ ------ + ------------- + ---------- + ---------- + ------ ------ + ---------------------- +
5行セット(0.00秒)


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

この記事はhttps://blog.csdn.net/haijiege/article/details/85006780から複製されています

おすすめ

転載: blog.csdn.net/qq_36138652/article/details/99733264