4.24 Proč je příkaz "SELECT count(*) FROM velkatabulka;" pomalý?

Z PostgreSQL
Skočit na navigaci Skočit na vyhledávání

Protože nelze použít index (pokud existuje). PostgreSQL musí kontrolovat viditelnost každého řádku, tudíž se aktivuje sekvenční čtení tabulky. Pokud chcete, můžete si udržovat počet řádků v pomocné tabulce (a aktualizovat pomocí triggerů), počátejte ovšem s tím, že zpomalíte zápis do tabulky.

Místo exaktního počtu řádků tabulky by v některých případech stačil odhad. Ten je k dispozici - sloupec reltuples v tabulce pg_class obsahuje počet řádků při posledním provedení příkazu ANALYZE. Pozor - pravděpodobně vždy se bude toto číslo lišit od skutečnosti, to ovšem v řadě případů nemusí vadit.