J'ai vu dans la documentation la différence entre count(*)et count(pk). J'avais utilisé count(pk)(où pkest 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 KEYcomprendre 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 EXPLAINet EXPLAIN VERBOSEpour count(*), count(id)et count(id > 50)voir s'il était EXPLAINmentionné de vérifier les prédicats dans sa sortie. Ce n'est pas le cas.