COUNT(*)
我想知道使用和之间是否存在性能差异COUNT(date_created)
。我读过唯一的语义差异是COUNT(*)
它还包括NULL
值,但是date_created
在这种特定情况下该字段不可为空。
我查看了各种帖子,但没有一个真正回答 MySQL 的这个问题。我发现的最好的是@tsilb 在这个线程上的评论。
COUNT(*)
我想知道使用和之间是否存在性能差异COUNT(date_created)
。我读过唯一的语义差异是COUNT(*)
它还包括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 确定使用哪个索引以获得最佳性能。