【问题标题】:How to speed up active record in rails3.2? My active record is taking more than 3 minutes for querying如何加快rails3.2中的活动记录?我的活动记录查询时间超过 3 分钟
【发布时间】:2019-03-14 04:21:00
【问题描述】:

这是我的活动记录查询,用于加载关于分支、区域和 mandal 的帐户。有人可以帮我优化它吗?

 HpEntry.includes(:area, :mandal, :branch)
        .where(:BranchId => 58, :AreaId => 117, :MandalId => 741)
        .last

【问题讨论】:

    标签: sql ruby-on-rails ruby-on-rails-3 activerecord ruby-on-rails-3.2


    【解决方案1】:

    在 3.2 中,通过显式指定您希望对结果进行排序的order,您可能会看到一些性能提升,并将其反转,以便您可以调用.first 而不是.last

    例如:

    HpEntry.includes(:area, :mandal, :branch)
           .where(:BranchId =>58, :AreaId => 117, :MandalId => 741)
           .order('created_at DESC') # <= newest first
           .first
    

    您还可以通过为正在搜索的列(BranchIdAreaIdMandalId)添加索引来获得更好的性能。在 PostgreSQL 中,您将通过添加三个索引获得最大的好处,在三列中的每一列上添加一个。其他 DBMS 系统可能会通过组合索引获得更好的性能。

    事实上,无论您使用什么数据库,学习和理解它的EXPLAIN 输出都会对您有帮助,这将使您深入了解数据库在做什么,以及查询的哪些部分最慢.这也可以让您深入了解您所做的任何更改是否真的有帮助。

    【讨论】:

      猜你喜欢
      • 2015-09-28
      • 2021-10-30
      • 2012-08-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2016-08-05
      • 2016-03-10
      • 2013-02-01
      相关资源
      最近更新 更多