1

使用 kaminari 的活动记录查询比原始 sql 需要更多的时间来给出结果。该表包含 8000 万条记录。

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

上面的代码生成下面的sql:

工单负载(89598.2ms

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]]

在 Rails 控制台或数据库中执行相同的 sql,需要28.3ms

无法找到为什么活动记录需要更多时间。两个时间差非常大。

4

0 回答 0