我想知道使用COUNT(*)
和COUNT(date_created)
之间是否存在性能差异。我读过唯一的语义差异是COUNT(*)
还包含NULL
个值,但date_created
字段在此特定情况下不可为空。
我查看了各种帖子,没有人真正回答MySQL的这个问题。我发现的最好的是@tsilb对this thread的评论。
答案 0 :(得分:2)
计数(*)更快,因为它不需要检查字段。
Count(column_name)需要表扫描,除非该列已经编入索引。
Count(*)只能查看主键索引。
答案 1 :(得分:2)
如果您有date_created
的索引,则没有区别。如果它是未编制索引的列,您将最终执行全表扫描。如果您有这样的问题,可以使用EXPLAIN SELECT COUNT(*) FROM my_table
并将其与EXPLAIN SELECT COUNT(date_created) FROM my_table
进行比较,从而了解很多。
答案 2 :(得分:0)
尝试使用COUNT(*)
,因为dbms会找出用于获得最佳性能的索引。