[英]Rails avoid N+1 query problem working with external and internal data
我有以下來自外部來源的數組:
documents = ['Doc Name 1', 'Doc Name 2', 'Doc Name 3', ...]
我想遍歷數組,並在我的數據庫(模型Doc
)中查找有關文檔的詳細信息(如果存在)。
documents.each do |document|
puts Doc.find_by_name(document).details if Doc.find_by_name(document)
end
這段代碼當然有效,但如何避免 N+1 查詢問題?
Hope details
是 table docs
中的列之一(模型的復數)
試試下面的:
documents = ['Doc Name 1', 'Doc Name 2', 'Doc Name 3']
Doc.where(name: documents).pluck(:details)
它將觸發單個查詢並僅選擇列details
值並返回數組中的詳細信息:
SELECT "docs"."details" FROM "docs"
WHERE "docs"."name" IN ('Doc Name 1', 'Doc Name 2', 'Doc Name 3')
如果您有更多關於數組documents
數據,請考慮使用批處理。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.