1. ホーム
  2. mysql

COUNT(*)すべきかどうか?

2023-09-17 14:37:41

質問

このようなクエリを行うのは一般的に良くないことだと思いますが、どうでしょうか?

SELECT * FROM `group_relations`

しかし、私は単にカウントが必要なとき、私はこのクエリに行くべきでしょうか、それはテーブルを変更することができ、まだ同じ結果をもたらします。

SELECT COUNT(*) FROM `group_relations`

また、より具体的には

SELECT COUNT(`group_id`) FROM `group_relations`

後者の方が速くなる可能性があるような気がするのですが、他に考慮すべき点はあるのでしょうか?

アップデートについて : この場合、私はInnoDBを使用しているのですが、より具体的でなくて申し訳ありません。

どのように解決するのですか?

当該カラムがNOT NULLの場合、どちらのクエリも同等です。group_id に NULL 値が含まれる場合。

select count(*)

は全ての行を数えますが

select count(group_id)

はgroup_idがNULLでない行だけを数えます。

また、MySQLのようないくつかのデータベースシステムは、count(*)を要求したときに、特定のクエリよりも少し速くなるような最適化を採用しています。

個人的には、単にカウントする場合、ヌル文字で安全側になるようにcount(*)をしています。