0

COUNT(*)とを使用することでパフォーマンスに違いがあるかどうか疑問に思っていCOUNT(date_created)ます。唯一のセマンティックの違いは値COUNT(*)も含まれていることですが、この特定のケースではフィールドは null 可能ではありません。NULLdate_created

私はさまざまな投稿を見てきましたが、MySQL に関するこの質問に実際に答えているものはありません。私が見つけた最高のものは、このスレッドに関する @tsilb のコメントです。

4

3 に答える 3

2

Count(*) は、フィールドを検査する必要がないため、高速です。

Count(column_name) は、その列が既にインデックス付けされていない限り、テーブル スキャンを必要とします。

Count(*) は、主キー インデックスを参照するだけです。

于 2012-06-19T23:29:26.830 に答える
2

にインデックスがある場合date_created、違いはありません。インデックスが作成されていない列の場合は、完全なテーブル スキャンを実行することになります。このような疑問を持った時、 を使っEXPLAIN SELECT COUNT(*) FROM my_tableたり比較したりすることで、多くのことを知ることができますEXPLAIN SELECT COUNT(date_created) FROM my_table

于 2012-06-19T23:31:32.453 に答える
0

COUNT(*)最高のパフォーマンスを得るために使用するインデックスを dbms が判断するため、使用してみてください。

于 2012-06-19T23:29:04.150 に答える