首页 » 优化 Active Record 查询的技巧:如何提高 Ruby on Rails 应用程序的性能

优化 Active Record 查询的技巧:如何提高 Ruby on Rails 应用程序的性能

使用 Ruby on Rails 时,了解如何优化数据库查询以提高性能和用户体验非常重要。 Active Record 是 Rails 的对象关系映射 (ORM) 工具,它提供了高效查询数据库的强大功能。

查询优化是一个复杂的主题

,已有许多相关书籍。在这 垃圾邮件数据 里,我们将探讨一些技术和技巧来优化 Active Record 查询并提高应用程序的速度和响应能力。

使用选择性列提取
优化 Active Record 查询的最有效方法之一是从数据库中仅检索所需的列。通过指定我们需要的精确列,我们可以最大限度地减少数据库和 Ruby on Rails 应用程序之间传输的数据。例如,如果我们只想使用数据库名称:

# 未优化的实践:检索所有列
用户全部

# 优化实  词组匹配中的主题定位  践:选择特定列
用户.选择(:id,:name)
使用预先加载
通过提前加载相关记录,预加载有助于减少数据库查询的次数。通过前置关联,您可以避免对每个关联记录进行 N+1 查询的问题。下面是 N+1 查询问题和称为俄罗斯套娃

存的替代技术的一个例子。

# N+1 查询问题
用户=User.all
用户.each { |用户| puts user.posts.count } # 对用户执行一次查询,对帖子执行 N 次查询(N = 用户数量)
在前面的例子中,我们检索 阿拉伯联合酋长国电话号码 所有用户,然后遍历每个用户以检索与他们相关的帖子数量。这会导致执行 N 个额外的查询,从而导致性能下降。

为了解决这个问题,我们可以使用 includes 方法进行预先加载,如下所示:

 预先加载解决方案

用户 = 用户.includes(:posts).all
用户.each { |用户| puts user.posts.count } # 执行两个查询:一个针对用户,一个针对帖子(无论用户数量多少)
使用 includes(:posts) 方法,加载

滚动至顶部