"select count(1) from table_name" 在任何数据库表中是什么意思?

10 浏览
0 Comments

"select count(1) from table_name" 在任何数据库表中是什么意思?

当我们执行 select count(*) from table_name 时,它返回行数。

count(1) 是什么意思?在这里 1 意味着什么?执行结果是否与 count(*) 相同(因为执行时它们返回相同的结果)?

admin 更改状态以发布 2023年5月24日
0
0 Comments

这里有一个链接可以帮助回答你的问题,简而言之:

count(*)是正确的写法,count(1)在内部被优化为count(*) --
因为

a) 计算非空的1的行数比
b) 计算行数要低效。

0
0 Comments

COUNT函数的参数是一个表达式,该表达式将为每行进行评估。COUNT函数返回表达式计算结果非空的行数。(*是一个特殊的表达式,它不会被计算,只返回行数。)

表达式还有两个附加修饰符:ALL和DISTINCT。它们决定是否丢弃重复行。由于ALL是默认的选项,因此您的示例与count(ALL 1)相同,这意味着会保留重复项。

由于表达式“1”对于每行都计算为非空,并且您没有删除重复项,因此COUNT(1)应始终返回与COUNT(*)相同的数字。

0