我在文档中看到了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提到检查其输出的断言。没有。