COUNT(*)
とを使用することでパフォーマンスに違いがあるかどうか疑問に思っていCOUNT(date_created)
ます。唯一のセマンティックの違いは値COUNT(*)
も含まれていることですが、この特定のケースではフィールドは null 可能ではありません。NULL
date_created
私はさまざまな投稿を見てきましたが、MySQL に関するこの質問に実際に答えているものはありません。私が見つけた最高のものは、このスレッドに関する @tsilb のコメントです。
COUNT(*)
とを使用することでパフォーマンスに違いがあるかどうか疑問に思っていCOUNT(date_created)
ます。唯一のセマンティックの違いは値COUNT(*)
も含まれていることですが、この特定のケースではフィールドは null 可能ではありません。NULL
date_created
私はさまざまな投稿を見てきましたが、MySQL に関するこの質問に実際に答えているものはありません。私が見つけた最高のものは、このスレッドに関する @tsilb のコメントです。
Count(*) は、フィールドを検査する必要がないため、高速です。
Count(column_name) は、その列が既にインデックス付けされていない限り、テーブル スキャンを必要とします。
Count(*) は、主キー インデックスを参照するだけです。
にインデックスがある場合date_created
、違いはありません。インデックスが作成されていない列の場合は、完全なテーブル スキャンを実行することになります。このような疑問を持った時、 を使っEXPLAIN SELECT COUNT(*) FROM my_table
たり比較したりすることで、多くのことを知ることができますEXPLAIN SELECT COUNT(date_created) FROM my_table
。
COUNT(*)
最高のパフォーマンスを得るために使用するインデックスを dbms が判断するため、使用してみてください。