anzahl der DS in Tabellen

Hallo,

Ich würde gerne wissen wie in der Tabelle “pg_class” die Anzahl der Datensätze einer Tabelle geupdatet werden können.

Die Anzahl der Datensätze zu einer Tabelle stehen in der “pg_class” in der Spalte “reltuples”.

Gibt es ausser einem vacuum noch andere möglichkeiten, damit diese Tabelle aktualisiert wird?

Wozu?

Die Anzahl der Datensätze zu einer Tabelle stehen in der “pg_class” in der Spalte “reltuples”.

Korrekt.

Gibt es ausser einem > vacuum > noch andere möglichkeiten, damit diese Tabelle aktualisiert wird?

IIRC auch Index und so, bin mir aber grad ned sicher.


Andreas

-> Wozu?

Ich bastel mir einen SQL-Editor.
Dieser bietet die Möglichkeit an, bei Programmstart die Anzahl aller DS in allen Tabellen anzuzeigen.
Um so DB-unabhängig wie möglich zu bleiben, ermittle ich welche Tabellen es gibt. Anschliessen mach ich auf jede einzelne dieser Tabellen einen “SELECT Count(*) from Tabellenname”
Da wir über 200 Tabellen haben dauert dieser vorgang etwa 20 sekunden.
Wenn nun jemand dieses “Feature” nicht möchte, biete ich als alternative dazu an die Anzahl der DS wenigstens ungefähr zu bestimmen. Dies kann ich über die o.g. Tabelle erreichen. Sie zeigt zwar keine Anzahl der Datensätze für Views an, aber gibt wenigstens Anhaltswerte zu den Tabellen.
Um die grobe Abschätzung ein wenig zu verbessern, möchte ich dann halt zu Beginn des Programmstarts die Daten aus der pg_class verwenden, da ich ja ehh von ihr Daten lese…

MFG
Ingo

Ahh, erinnere mich, das war schon mal Thema hier.

Die Anzahl der Datensätze zu einer Tabelle stehen in der “pg_class” in der Spalte “reltuples”.
Gibt es ausser einem > vacuum > noch andere möglichkeiten, damit diese Tabelle aktualisiert wird?

Ich hatte das vorhil leicht flasch geparst, so in dem Sinne, Du willst das manipulieren, was dort steht.

Okay, lt. Handbuch:

Number of rows in the table. This is only an estimate used by the planner. It is updated by VACUUM, ANALYZE, and a few DDL commands such as CREATE INDEX

Andreas

Vielen Dank!
ANALYZE hilft da weiter… dauert etwa 2 bis 3 sekunden