簡體   English   中英

Rails 避免處理外部和內部數據的 N+1 查詢問題

[英]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.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM