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

Z PostgreSQL
Přejít na: navigace, hledá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.