Beim Datenbank-Paging ist die Bestimmung der Gesamtzahl der Seiten für die Darstellung von Paginierungskontrollen von entscheidender Bedeutung. Allerdings kann die Ausführung separater Zähl- und Grenzwertabfragen zu diesem Zweck ineffizient sein. In diesem Artikel wird eine verbesserte Technik untersucht, um die Ergebnisanzahl zu erhalten, ohne Datenbankbeschränkungen anzuwenden.
PostgreSQL-Versionen 8.4 und höher führten Fensterfunktionen ein, die die Berechnung von Aggregatfunktionen über partitionierte Teilmengen von ermöglichten Daten. Dies ermöglicht es uns, die Gesamtzahl zu ermitteln und das begrenzte Ergebnis in einer einzigen Abfrage abzurufen.
SELECT foo, COUNT(*) OVER() AS full_count FROM bar WHERE <some condition> ORDER BY <some col> LIMIT <pagesize> OFFSET <offset>;
Diese Methode kann jedoch zu zusätzlichem Leistungsaufwand führen, da alle qualifizierten Zeilen gezählt werden müssen, was möglicherweise die Leistung bei großen Zeilen beeinträchtigt Tabellen oder OFFSET-Werte nahe der Gesamtzeilenanzahl.
In Fällen, in denen die Leistung ein Problem darstellt, können alternative Ansätze verwendet werden verwendet werden, um die endgültige Anzahl der betroffenen Zeilen zu erhalten, unabhängig von OFFSET- und LIMIT-Anwendungen. Die interne Buchhaltung von Postgres verfolgt diese Informationen, auf die einige Clients zugreifen können.
Das obige ist der detaillierte Inhalt vonWie kann ich die Gesamtergebnisanzahl in PostgreSQL effizient abrufen, bevor LIMIT angewendet wird?. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!