使用 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
无法找到为什么活动记录需要更多时间。两个时间差非常大。