如何加速 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
您还可以通过为要搜索的列(BranchId
、AreaId
和 MandalId
)添加索引来获得更好的性能。在 PostgreSQL 中,您将通过添加三个索引获得最大收益,三个索引各一个。其他 DBMS 系统可能会通过复合索引获得更好的性能。
事实上,无论您使用什么数据库,学习和理解它的 EXPLAIN
输出都对您有好处,这将使您深入了解您的数据库在做什么,以及您的数据库的哪些部分查询是最慢的。这也会让您了解您所做的任何更改是否真的有帮助。
这是我的活动记录查询,用于加载有关分支机构、区域和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
您还可以通过为要搜索的列(BranchId
、AreaId
和 MandalId
)添加索引来获得更好的性能。在 PostgreSQL 中,您将通过添加三个索引获得最大收益,三个索引各一个。其他 DBMS 系统可能会通过复合索引获得更好的性能。
事实上,无论您使用什么数据库,学习和理解它的 EXPLAIN
输出都对您有好处,这将使您深入了解您的数据库在做什么,以及您的数据库的哪些部分查询是最慢的。这也会让您了解您所做的任何更改是否真的有帮助。