SQL

COUNT(*)とCOUNT(1)の処理速度検証結果

  • このエントリーをはてなブックマークに追加

SELECT COUNT(*)、COUNT(1)の処理速度検証1回目~3回目のまとめになります。

SELECT COUNT(*)、COUNT(1)の処理速度検証結果まとめ

対象テーブルのカラムが2つの場合

レコード件数 SQL 処理速度(平均) recursive calls consistent gets
100万 SELECT COUNT(*) 0.55秒 0 247
SELECT COUNT(1) 0.58秒 4 312
500万 SELECT COUNT(*) 0.94秒 4 1073
SELECT COUNT(1) 1.01秒 0 989
1,000万 SELECT COUNT(*) 1.00秒 0 1891
SELECT COUNT(1) 0.97秒 4 1969

対象テーブルのカラムが5つの場合

レコード件数 SQL 処理速度(平均) recursive calls consistent gets
100万 SELECT COUNT(*) 1.45秒 0 1891
SELECT COUNT(1) 1.32秒 4 1998
500万 SELECT COUNT(*) 2.77秒 0 10118
SELECT COUNT(1) 2.80秒 4 10225
1,000万 SELECT COUNT(*) 3.22秒 0 20074
SELECT COUNT(1) 4.03秒 4 20178

レコード件数が増えて、カラム数も増えるとSELECT COUNT(*)の方が速いという検証結果となりました。

億単位のレコードを扱っている場合はSELECT COUNT(*)を使った方が良いかと思います。

実行計画としては変わりませんが、統計は『SELECT COUNT(*)』の方が、『SELECT COUNT(1)』と比べて『recursive calls』『consistent gets』の値が少なかったので、『SELECT COUNT(*)』の方が負荷の低いSQLとなるようです。

以上です

  • このエントリーをはてなブックマークに追加

コメントを残す

*