我想知道为什么count(*)的总运行时间小于同一个表的count(primary_key)?
查询计划(使用说明分析)显示每次Postgresql正在进行Seq Scan而不是使用索引?为什么会这样?为什么在这种情况下不使用索引?
编辑:count(1)
没有任何区别。
答案 0 :(得分:0)
当您使用SELECT COUNT(*)
或SELECT COUNT()
时,您只是计算表格中的行数,忽略列数据。
使用SELECT COUNT(primary_key)
时,还必须从行中获取列primary_key
,并且 - 根据SQL引擎,我认为 - 只考虑非空值。