sql >> Databáze >  >> RDS >> PostgreSQL

Pokud je PostgreSQL count(*) vždy pomalý, jak stránkovat složité dotazy?

Četl jste nadpis toho článku?

Všimněte si, že následující článek se vztahuje pouze na verze PostgreSQL starší než 9.2. Prohledávání pouze indexu je nyní implementováno.

Použijte 9.2 a obecně zjistíte, že získáte mnohem lepší výsledky. Podrobnosti najdete na wiki stránce s prohledáváním pouze indexu.

To znamená, že na starších verzích používajících LIMIT a OFFSET obecně funguje dobře. Počet řádků (a tedy i počet stránek) můžete odhadnout pomocí statistik tabulky, pokud vám nevadí trocha variací. Viz „Odhad počtu řádků“ v článku, na který jste již odkazovali.

Stránkování pomocí LIMIT a OFFSET je, IMO, každopádně anti-vzorec. Většinu času můžete přeformulovat kód stránkování tak, aby používal sort_column > 'last_seen_value' LIMIT 100 , tj. vyhýbá se offsetu. To může někdy vést k velmi velkému nárůstu výkonu.



  1. Při výběru a zakódování základního 64 obrázku z databáze byla zjištěna pomalost

  2. Rozhodněte se mezi monitorováním na základě agenta a monitorováním bez agenta

  3. Jaký je nejúčinnější způsob, jak zkontrolovat, zda záznam v Oracle existuje?

  4. Migrace z databáze Oracle na MariaDB – hluboký ponor