PostgreSQL
 sql >> Baza danych >  >> RDS >> PostgreSQL

Jak przyspieszyć liczenie wierszy w tabeli PostgreSQL?

Aby uzyskać bardzo szybkie oszacowanie:

SELECT reltuples FROM pg_class WHERE relname = 'my_table';

Istnieje jednak kilka zastrzeżeń. Po pierwsze, relname niekoniecznie jest unikalny w pg_class . Może istnieć wiele tabel z tym samym relname w wielu schematach bazy danych. Aby być jednoznacznym:

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

Jeśli nie kwalifikujesz nazwy tabeli według schematu, rzutuj na regclass obserwuje bieżącą search_path wybrać najlepsze dopasowanie. A jeśli tabela nie istnieje (lub nie można jej zobaczyć) w żadnym ze schematów w search_path otrzymasz komunikat o błędzie. Zobacz Typy identyfikatorów obiektów w instrukcji.

Rzut na bigint formatuje real liczba ładnie, szczególnie dla dużych liczb.

Również reltuples mogą być mniej lub bardziej nieaktualne. Są sposoby, aby to do pewnego stopnia nadrobić. Zobacz tę późniejszą odpowiedź z nowymi i ulepszonymi opcjami:

  • Szybki sposób na sprawdzenie liczby wierszy tabeli w PostgreSQL

I zapytanie na pg_stat_user_tables jest wielokrotnie wolniejszy (choć nadal znacznie szybszy niż pełna liczba), ponieważ jest to widok na kilka tabel.



  1. Database
  2.   
  3. Mysql
  4.   
  5. Oracle
  6.   
  7. Sqlserver
  8.   
  9. PostgreSQL
  10.   
  11. Access
  12.   
  13. SQLite
  14.   
  15. MariaDB
  1. Pyodbc — Nie znaleziono nazwy źródła danych i nie określono domyślnego sterownika

  2. Błąd podczas łączenia się z postgresql przy użyciu sqlalchemy

  3. baza danych zmiany nazwy postgres nie działa

  4. Dynamiczne zapytanie przestawne przy użyciu PostgreSQL 9.3

  5. Slick 2.0 Ogólne operacje CRUD