MySQL 中的 COUNT(id) 与 COUNT(*)
Posted
技术标签:
【中文标题】MySQL 中的 COUNT(id) 与 COUNT(*)【英文标题】:COUNT(id) vs. COUNT(*) in MySQL 【发布时间】:2010-12-14 09:43:27 【问题描述】:假设表中有一个主字段“id”(如速度等),以下查询之间是否有区别?
SELECT COUNT(id)
FROM table
对比
SELECT COUNT(*)
FROM table
【问题讨论】:
在 www.mysqlperformanceblog.com 上查看Count(*) vs Count(col),他们针对各种“col”类型(NOT NULL 与否,带有索引等)讨论了这个主题,而这个主题适用于 MyISAM 和 InnoDB 表. 你可以看看这些线程***.com/questions/1221559/count-vs-count1***.com/questions/433913/…***.com/questions/59294/… 【参考方案1】:我知道这个问题是关于 MySQL 的,但是对于它的价值,建议 Oracle 使用 count(*):这表明这是特定于数据库的(参见 BalusC 的上述评论)。由于许多数据库(MS-SQL、MySQL)都有包含各种类型元数据的信息模式表,如果一种语法只是简单地查找现成的值,而另一种语法直接查找表,则必然会有所不同.在一天结束时:尝试不同的选项,看看 EXPLAIN 告诉你幕后发生了什么。
【讨论】:
在我看来越来越多的方法是要么使用 ORM(并希望它针对所有情况进行优化),要么为 one 编写 SQL数据库引擎,忘记其余的。【参考方案2】:计数(*) 计数(姓名) 可以显示差异输出,因为 Ename 不是具有 不是空约束,它肯定有一些空值 哪些没有被计算在内。
希望对您有所帮助..!
【讨论】:
我认为这个问题指的是 PK 当它说“id”时,所以假定 NOT NULL 以及 PRI 索引。以上是关于MySQL 中的 COUNT(id) 与 COUNT(*)的主要内容,如果未能解决你的问题,请参考以下文章
MySQL中的limit vs exists vs count(*) vs count(id) [重复]