Kaminari (или любая нумерация страниц) работает медленно на присоединенном запросе - PullRequest
7 голосов
/ 12 мая 2011

Я разбил следующий запрос на Kaminari (хотя я получаю похожие результаты с will_paginate):

Person.joins([:locations=>:location_hour], :friends, :current_images).where(sql_conditions_string).page(params[:page]).per(10)

Все работает как положено, но нумерация страниц добавляет вызов базы данных

SELECT COUNT(*) FROM 'people' INNER JOIN 'location_histories'...

это количество вызовов (*) для всего запроса. Это занимает 1,3 секунды, тогда как исходный запрос (включая точно такие же объединения и условия .where) занимает всего ~ 0,5 секунды.

Есть ли способ для нумерации страниц просто использовать счет из исходного запроса? Последний вызов базы данных - большая проблема с производительностью.

Я на Rails 3.0.7.

Спасибо!

...