PostgreSQL
 sql >> Datenbank >  >> RDS >> PostgreSQL

Wenn die PostgreSQL-Anzahl (*) immer langsam ist, wie werden komplexe Abfragen paginiert?

Haben Sie die Überschrift dieses Artikels gelesen?

Beachten Sie, dass der folgende Artikel nur für Versionen von PostgreSQL vor 9.2 gilt. Nur-Index-Scans sind jetzt implementiert.

Verwenden Sie 9.2 und Sie werden im Allgemeinen feststellen, dass Sie viel bessere Ergebnisse erzielen. Weitere Informationen finden Sie auf der Wiki-Seite zu Nur-Index-Scans.

Das heißt, auf älteren Versionen mit LIMIT und OFFSET funktioniert im Allgemeinen gut. Sie können die Anzahl der Zeilen (und damit der Seiten) mithilfe der Tabellenstatistiken schätzen, wenn Ihnen ein wenig Variation nichts ausmacht. Siehe "Zeilenanzahl schätzen" in dem Artikel, den Sie bereits verlinkt haben.

Seitenumbruch mit LIMIT und OFFSET ist meiner Meinung nach sowieso ein Anti-Pattern. Häufig können Sie Ihren Paginierungscode so umformulieren, dass er sort_column > 'last_seen_value' LIMIT 100 verwendet , d.h. es vermeidet den Versatz. Dies kann manchmal zu sehr großen Leistungssteigerungen führen.