如何加快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

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

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

【讨论】:

以上是关于如何加快rails3.2中的活动记录?我的活动记录查询时间超过 3 分钟的主要内容,如果未能解决你的问题,请参考以下文章

codeigniter 查询生成器和活动记录 sql 注入

如何查询活动记录?

使用活动记录形成查询

如何从 codeigniter 活动记录中的 DATETIME 字段中获取 d-m-Y 格式的日期?

CodeIgniter 活动记录在子查询中的位置

如何使用代码点火器活动记录查询返回一维数组中的表字段