私が見た中でのドキュメントの違いを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、その出力に述語をチェック述べました。そうではありません。