COUNT(*)とを使用することでパフォーマンスに違いがあるかどうか疑問に思っていCOUNT(date_created)ます。唯一のセマンティックの違いは値COUNT(*)も含まれていることですが、この特定のケースではフィールドは null 可能ではありません。NULLdate_created
私はさまざまな投稿を見てきましたが、MySQL に関するこの質問に実際に答えているものはありません。私が見つけた最高のものは、このスレッドに関する @tsilb のコメントです。
COUNT(*)とを使用することでパフォーマンスに違いがあるかどうか疑問に思っていCOUNT(date_created)ます。唯一のセマンティックの違いは値COUNT(*)も含まれていることですが、この特定のケースではフィールドは null 可能ではありません。NULLdate_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 が判断するため、使用してみてください。