Activerecord查询比原始sql花费更多时间

时间:2018-04-27 14:08:22

标签: ruby-on-rails oracle activerecord kaminari ruby-on-rails-5.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

无法找到活动记录需要更多时间的原因。两个时间之间的差异非常大。

0 个答案:

没有答案