2017-06-22 6 views

答えて

6

N+1Ectoでクエリが発生しません。

エクト団体は、明示的にロードされていない関連にアクセスしようとすると、それは他の遅いクエリ用としてEcto.Association.NotLoaded

のインスタンスになりますpreload

を使用してクエリにロードする必要があり、

config :my_app, MyApp.Repo, 
    adapter: Ecto.Adapters.Postgres, 
    url: {:system, "DATABASE_URL"}, 
    loggers: [{Ecto.LogEntry, :log, []}, {MyApp.CustomLogger, :log, []}] 

カスタムロガー:

defmodule MyApp.CustomLogger do 
    def log(entry) do 
    if (entry.query_time > 1000_000) do 
     Logger.info("Slow!!!!: #{entry.query}") 
    end 
    end 
end 
あなたはエクトにカスタムロガーを追加することができます
0

私は、このリンクは質問に答えるかもしれないが、ここでは答えの重要な部分が含まれており、参考のためにリンクを提供するために優れているあなたに私自身の宝石ecto_profiler

+0

をお勧めすることができます。リンクされたページが変更された場合、リンクのみの回答は無効になります。 - [レビューより](/レビュー/低品質の投稿/ 18634357) –

+0

@JessBowers大きくて厚い宝石の重要な部分をどのように含めることができますか?神経力学は弾丸のアナログを求める!コードの一部ではありません!それは品質が低く、無責任なレビューです –

+0

あなたは何を意味するか分かります。しかし、あなたがSOのための悪い質問だと思うなら(本当に良い質問のSO規則に合わない「買い物質問」)、その場合は答えなくて、質問に投票してください。または、Qを編集してより良いものにするようにしてください。私はあなたがサイトを使用するのを手助けしようとしているだけで、怒らないようにしています - そして私はただ1人の有権者です。 –

関連する問題