0

COUNT(*)我想知道使用和之间是否存在性能差异COUNT(date_created)。我读过唯一的语义差异是COUNT(*)它还包括NULL值,但是date_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 回答