在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中文網其他相關文章!