J'ai vu dans la documentation la différence entre count(*)
et count(pk)
. J'avais utilisé count(pk)
(où pk
est a SERIAL PRIMARY KEY
) sans savoir l'existence de count(*)
.
Ma question concerne les optimisations internes de Postgres. Est-il suffisamment intelligent pour SERIAL PRIMARY KEY
comprendre qu'un va exister dans chaque ligne et ne jamais être faux et simplement compter les lignes ou fera-t-il des vérifications de prédicat redondantes pour chaque ligne? Je suis d'accord que c'est probablement trop d'une optimisation inutile, mais je suis juste curieux.
J'ai jeté un coup d'œil à la sortie de EXPLAIN
et EXPLAIN VERBOSE
pour count(*)
, count(id)
et count(id > 50)
voir s'il était EXPLAIN
mentionné de vérifier les prédicats dans sa sortie. Ce n'est pas le cas.