count(1)、count(*) 与 count(列名) 的区别
三者都是在SQL中用于计算行数的不同方式,存在以下区别:
- count(1):
-
- count(1) 用于计算结果集中的行数,不考虑具体的列值,这种方式通常是最快的,因为它只需要统计行数。
- count(*):
-
- count(*) 也用于计算结果集中的行数,与 count(1) 类似,它也不需要考虑特定列的值,但在某些数据库系统中,它可能稍微慢一些,因为在执行时会考虑对表的全面扫描。
- 然而,现代数据库优化器通常会将 count(*) 优化为 count(1)。
- count(列名):
-
- count(列名) 用于计算特定列中非NULL值的行数,而不是结果集的总行数。