如何加快rails3.2中的活动记录?我的活动记录查询时间超过 3 分钟
Posted
技术标签:
【中文标题】如何加快rails3.2中的活动记录?我的活动记录查询时间超过 3 分钟【英文标题】:How to speed up active record in rails3.2? My active record is taking more than 3 minutes for querying 【发布时间】:2019-03-14 04:21:00 【问题描述】:这是我的活动记录查询,用于加载关于分支、区域和 mandal 的帐户。有人可以帮我优化它吗?
HpEntry.includes(:area, :mandal, :branch)
.where(:BranchId => 58, :AreaId => 117, :MandalId => 741)
.last
【问题讨论】:
【参考方案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
您还可以通过为正在搜索的列(BranchId
、AreaId
和 MandalId
)添加索引来获得更好的性能。在 PostgreSQL 中,您将通过添加三个索引获得最大的好处,在三列中的每一列上添加一个。其他 DBMS 系统可能会通过组合索引获得更好的性能。
事实上,无论您使用什么数据库,学习和理解它的EXPLAIN
输出都会对您有帮助,这将使您深入了解数据库在做什么,以及查询的哪些部分最慢.这也可以让您深入了解您所做的任何更改是否真的有帮助。
【讨论】:
以上是关于如何加快rails3.2中的活动记录?我的活动记录查询时间超过 3 分钟的主要内容,如果未能解决你的问题,请参考以下文章