PostgreSQL
 sql >> база данни >  >> RDS >> PostgreSQL

Ако PostgreSQL count(*) винаги е бавен, как да се пагинират сложни заявки?

Прочетохте ли заглавието на тази статия?

Имайте предвид, че следната статия се отнася само за версии на PostgreSQL преди 9.2. Сега са въведени сканирания само за индекси.

Използвайте 9.2 и като цяло ще откриете, че получавате много по-добри резултати. Прочетете уики страницата за сканиране само за индекс за подробности.

Въпреки това в по-стари версии се използва LIMIT и OFFSET като цяло работи добре. Можете да оцените броя на редовете (и следователно броя на страниците), като използвате статистиката на таблицата, ако нямате нищо против малко вариации. Вижте „Оценяване на броя на редовете“ в статията, към която вече сте направили връзка.

Страниране чрез LIMIT и OFFSET е, IMO, все пак анти-модел. Много често можете да префразирате кода си за пагинация, така че да използва sort_column > 'last_seen_value' LIMIT 100 , тоест избягва изместването. Това понякога може да доведе до много големи печалби в производителността.



  1. Database
  2.   
  3. Mysql
  4.   
  5. Oracle
  6.   
  7. Sqlserver
  8.   
  9. PostgreSQL
  10.   
  11. Access
  12.   
  13. SQLite
  14.   
  15. MariaDB
  1. Как да конкатенира низове от низ поле в PostgreSQL заявка „групиране по“?

  2. Как да вмъкна JSONB в Postgresql с Python?

  3. Набор на JDBCTemplate вложен POJO с BeanPropertyRowMapper

  4. как да емулирам вмъкване игнориране и при актуализиране на дублиран ключ (sql обединяване) с postgresql?

  5. Как да създадете разширение postgres вътре в контейнера?