我在文档中看到了count(*)
和之间的区别count(pk)
。我一直在使用count(pk)
(这里pk
是SERIAL PRIMARY KEY
)不知道约的存在count(*)
。
我的问题是关于Postgres的内部优化。是否足够聪明地知道SERIAL PRIMARY KEY
每行中都会存在一个a ,并且永远不会为假,仅对行进行计数?还是会对每行进行多余的谓词检查?我同意这可能是毫无意义的优化,但我很好奇。
我看了看输出EXPLAIN
和EXPLAIN VERBOSE
为count(*)
,count(id)
并count(id > 50)
看看是否EXPLAIN
提到检查其输出的断言。没有。