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