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

Jak zrychlím počítání řádků v tabulce PostgreSQL?

Pro velmi rychlý odhad:

SELECT reltuples FROM pg_class WHERE relname = 'my_table';

Existuje však několik upozornění. Za prvé relname není nutně jedinečné v pg_class . Může existovat více tabulek se stejným relname ve více schématech databáze. Abychom byli jednoznační:

SELECT reltuples::bigint FROM pg_class WHERE oid = 'my_schema.my_table'::regclass;

Pokud název tabulky nekvalifikujete podle schématu, přetypování na regclass sleduje aktuální search_path vybrat nejlepší zápas. A pokud tabulka neexistuje (nebo ji nelze vidět) v žádném ze schémat v search_path zobrazí se chybová zpráva. Viz Typy identifikátorů objektů v návodu.

Obsazení do bigint formátuje real číslo pěkně, zvláště pro velké počty.

Také reltuples může být více či méně zastaralé. Existují způsoby, jak to do určité míry kompenzovat. Podívejte se na tuto pozdější odpověď s novými a vylepšenými možnostmi:

  • Rychlý způsob, jak zjistit počet řádků v tabulce v PostgreSQL

A dotaz na pg_stat_user_tables je mnohonásobně pomalejší (i když stále mnohem rychlejší než plný počet), protože to je pohled na několik stolů.



  1. Výjimka nulového ukazatele při volání getReadableDatabase()

  2. Jak používat příkaz SQLite Dump

  3. ver.2 CHYBA PyGreSQL:z importu _pg * Chyba importu:Načtení knihovny DLL se nezdařilo:Zadaný modul nebyl nalezen

  4. Jak pracovat s nástroji na obrazovce v Accessu 2019