如何加速 rails3.2 中的活动记录?我的活动记录查询时间超过 3 分钟

How to speed up active record in rails3.2? My active record is taking more than 3 minutes for querying

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

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

在 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 输出都对您有好处,这将使您深入了解您的数据库在做什么,以及您的数据库的哪些部分查询是最慢的。这也会让您了解您所做的任何更改是否真的有帮助。