COUNT(*) 和 COUNT(1) 都可以用来统计行数,但是有以下区别:
COUNT(*)会统计所有行,包括其中存在 NULL 值的行。COUNT(1)统计的是第一个字段(1),因为这个值在每一行中都存在,所以实际上也是统计了所有行。但是由于不需要检查每一行的数据,因此在某些情况下,COUNT(1)的性能可能略高于COUNT(*)。
总之,如果你只是想要统计行数,而不用关心 NULL 值或其他列的值,那么建议使用 COUNT(1)。
COUNT(*) 是 SQL 标准语法并且在大多数情况下都可以正常使用,包括处理包含 NULL 值的行。所以在实际使用中,如果你需要统计某个表中的所有行数,那么使用 COUNT(*) 是较为保险和稳妥的做法。但是如果你关心性能,或者只想统计非空行的数量,那么可以考虑使用其他更高效或更精确的方法。
文章讨论了SQL中COUNT(*)和COUNT(1)函数在统计行数时的区别。COUNT(*)会包括NULL值行,而COUNT(1)因常量优化可能在性能上占优。虽然COUNT(*)是标准语法且更通用,但在关注性能时,COUNT(1)可作为选择。若仅需统计行数而不关心NULL,COUNT(1)是高效选项。

被折叠的 条评论
为什么被折叠?



