sql >> Database >  >> RDS >> PostgreSQL

Als PostgreSQL count(*) altijd traag is, hoe moet u dan complexe query's pagineren?

Heb je de kop van dat artikel gelezen?

Merk op dat het volgende artikel alleen van toepassing is op versies van PostgreSQL ouder dan 9.2. Scans met alleen index zijn nu geïmplementeerd.

Gebruik 9.2 en u zult over het algemeen merken dat u veel betere resultaten krijgt. Lees de wikipagina die alleen de index scant voor details.

Dat gezegd hebbende, op oudere versies die LIMIT . gebruiken en OFFSET werkt over het algemeen prima. U kunt het aantal rijen (en dus het aantal pagina's) schatten met behulp van de tabelstatistieken als u een beetje variatie niet erg vindt. Zie "Het aantal rijen schatten" in het artikel waarnaar u al heeft gelinkt.

Paginering met behulp van LIMIT en OFFSET is, IMO, sowieso een anti-patroon. Vaak kunt u uw pagineringscode zo herformuleren dat deze sort_column > 'last_seen_value' LIMIT 100 gebruikt , d.w.z. het vermijdt de offset. Dit kan soms resulteren in zeer grote prestatiewinsten.



  1. Java:CLOB invoegen in de Oracle-database

  2. Fix Error Msg 4151 "Het type van het eerste argument voor NULLIF kan niet de NULL-constante zijn omdat het type van het eerste argument bekend moet zijn" in SQL Server

  3. Wat maakt een SQL-statement sargable?

  4. Tabellen zoeken die een specifieke kolom bevatten in SQL Server