Ho visto nella documentazione la differenza tra count(*)e count(pk). Stavo usando count(pk)(dov'è pka SERIAL PRIMARY KEY) non sapendo dell'esistenza di count(*).
La mia domanda riguarda le ottimizzazioni interne di Postgres. È abbastanza intelligente capire che SERIAL PRIMARY KEYa esisterà in ogni riga e non sarà mai falso e conterà solo le righe o eseguirà controlli predicati ridondanti per ogni riga? Concordo sul fatto che probabilmente si tratta di un'ottimizzazione troppo inutile, ma sono solo curioso.
Ho dato un'occhiata all'output di EXPLAINe EXPLAIN VERBOSEper count(*), count(id)e count(id > 50)per vedere se EXPLAINmenzionato controllando i predicati nel suo output. Non