使用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
无法找到活动记录需要更多时间的原因。两个时间之间的差异非常大。