sql >> Databasteknik >  >> RDS >> PostgreSQL

Om PostgreSQL-antalet(*) alltid är långsamt, hur paginerar man komplexa frågor?

Läste du rubriken på den artikeln?

Observera att följande artikel endast gäller versioner av PostgreSQL före 9.2. Indexsökningar är nu implementerade.

Använd 9.2 och du kommer generellt att upptäcka att du får mycket bättre resultat. Läs wikisidan för endast index-skanningar för detaljer.

Som sagt, på äldre versioner som använder LIMIT och OFFSET fungerar i allmänhet bra. Du kan uppskatta radantal (och därmed sidantal) med hjälp av tabellstatistiken om du inte har något emot lite variation. Se "Uppskattning av antal rader" i artikeln du redan har länkat till.

Paginering med LIMIT och OFFSET är, IMO, ett antimönster i alla fall. Ofta kan du omformulera din sidnumreringskod så att den använder sort_column > 'last_seen_value' LIMIT 100 , d.v.s. den undviker offset. Detta kan ibland resultera i mycket stora prestandavinster.



  1. SQRT() Exempel i SQL Server

  2. Hur GET_FORMAT() fungerar i MariaDB

  3. Bevilja val på alla tabeller som ägs av en specifik användare

  4. xampp MySQL startar inte