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から複製されています。