Запрос Activerecord занимает больше времени, чем простой sql - PullRequest
0 голосов
/ 27 апреля 2018

Запрос активной записи с использованием kaminari требует больше времени для получения результатов, чем необработанный sql. Таблица содержит 80 миллионов записей.

Ticket.order("tickets.id desc").page(1).without_count.per(10)

Приведенный выше код генерирует ниже sql:

Загрузка билета ( 89598.2мс )

SELECT
   * 
FROM
   (
      SELECT
         raw_sql_.*,
         rownum raw_rnum_ 
      FROM
         (
            SELECT
               "TICKETS".* 
            FROM
               "TICKETS" 
            ORDER BY
               TICKETS.ID DESC 
         )
         raw_sql_ 
      WHERE
         rownum <= (:a1 + :a2)
   )
WHERE
   raw_rnum_ > :a1 
[["OFFSET", 0], ["LIMIT", 11]]

Тот же sql при выполнении в консоли rails или базе данных занимает 28.3ms

Не удалось найти, почему активная запись занимает больше времени. Разница между двумя временами очень велика.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...