在 Rails 中执行原始 SQL 查询
要提高 Rails 应用程序的性能,您可以考虑使用原始 SQL 查询,尤其是在 Heroku 上请求容易出现超时错误的地方。让我们探讨如何将特定代码片段转换为原始 SQL:
@payments = PaymentDetail.joins(:project).order('payment_details.created_at desc') @payment_errors = PaymentError.joins(:project).order('payment_errors.created_at desc') @all_payments = (@payments + @payment_errors)
此代码将两个关联(@ payments 和 @ payment_errors)组合到 @all_ payment 中。要作为原始 SQL 执行此查询,您可以使用以下步骤:
sql = "SELECT * FROM payment_details JOIN projects ON payment_details.project_id = projects.id ORDER BY payment_details.created_at DESC UNION SELECT * FROM payment_errors JOIN projects ON payment_errors.project_id = projects.id ORDER BY payment_errors.created_at DESC;" records_array = ActiveRecord::Base.connection.execute(sql)
生成的 reports_array 将包含从 SQL 查询获取的记录数组,允许您根据需要迭代它们。这种方法比原始 Ruby 代码更快,因为它绕过了 Rails 的 ORM 层,直接访问数据库。
以上是如何通过执行原始 SQL 查询来优化 Rails 性能?的详细内容。更多信息请关注PHP中文网其他相关文章!