問題タブ [eager-loading]
For questions regarding programming in ECMAScript (JavaScript/JS) and its various dialects/implementations (excluding ActionScript). Note JavaScript is NOT the same as Java! Please include all relevant tags on your question; e.g., [node.js], [jquery], [json], [reactjs], [angular], [ember.js], [vue.js], [typescript], [svelte], etc.
linq-to-sql - Linq-To-Sql でツリーを効率的に選択する
2 つのテーブルを含む linq-to-sql データ レイヤーがあります。"親子"。子と親の間には関係があり (親には多くの子供がいるなど)、親も多くの親を持つことができます (子供が成長して自分自身が親になるとき)。
この階層をユーザーに表示したいのですが、これを効率的に行う方法がわかりません。
非効率的なアプローチは次のとおりです。
しかし、これはループ内の反復ごとに db 往復を 2 回生成します (eek!!)。大規模なファミリの場合、これは非常に高価になります。
より良い方法はありますか?(神よ、そう願っています!)
c# - APIでLazy/Delay-loadingからEager-loadingに変換する好ましい方法は?
私はしばらくの間 API (一種の Web サービスをラップする) に取り組んできましたが、その機能はほぼ完成しています。
私は当初、この API を全体的に遅延/遅延ロードするように設計しました。これは、Web サービスの使用に固有のレイテンシーを考慮して、利用可能なデータの小さなサブセットのみに関心がある場合に完全に理にかなっています。ただし、API のコンシューマーにとってイージー ロードがはるかに簡単になるいくつかのユース ケースを考慮していませんでした。
ですから、私の質問は次のとおりです。主に遅延読み込みである API が、クラスの熱心に読み込まれたバージョンを取得するためのメカニズムをどのように公開することを望みますか?
私はキャストに傾いていますが、より冗長であればexplicit
、のラインに沿ったものも自然に見えます。Eager.AsEager(SomeDelayLoadingObject)
ruby-on-rails - Rails はカスタムの熱心なロードを追加します
Rails にはカスタムの find_by_sql クエリがいくつかあります。それらで熱心な読み込みを使用したいのですが、これを行う良い方法はないようです。
eager_custom.rb ファイルがあちこちにあるのを見たことがありますが、現在 Rails では動作しないようです。Rails は、過去に使用された単一の結合クエリの代わりに、2 つのクエリ (通常のクエリと、最初のクエリの ID に 'id IN' が含まれるクエリ) を使用して、異なる方法で熱心な読み込みを行っているようです。
私の質問は、カスタム SQL クエリを実行してから 'id IN' クエリを実行した場合、関連するオブジェクトを最初のクエリ結果に戻す方法はありますか?
たとえば、find_by_sql でトピックを読み込んでいて、トピック ID にトピック ID が含まれているトピック画像を見つけました。画像を手動でトピックに追加する方法はありますか?
ありがとう
linq - LoadOptionsを使用せずに多対多の読み込み/プリフェッチを熱心に行う-LinqtoSql
多対多の関係を通じていくつかのエンティティをプリフェッチする必要がある状況があります。つまり、それは古典的なBlogPost <- BlogPostTag -> Tag
状況のようなものです。
はい、LoadOptionsを認識していますが、Webアプリケーションであり、リクエストパターンごとに1つのデータコンテキストを使用しているため、使用できません。
また、プロジェクションを使用して多対多の関係をプリフェッチすることはできないようです。はい?いいえ?
IQueryable<Tag>
一連のブログをもとに帰りたいです。私ができる最善のことはIQueryable<IEnumerable<Tag>>
、次のようにしてそれを返すことです。
それを平らにできますか?明らかな何かが欠けていますか?私が取ることができる別のアプローチはありますか?
いいえ、ORMを変更することはできません;-)
asp.net-mvc - ロードしたいプロパティの名前がわからない場合、どうすれば熱心なロードを実行できますか?
汎用リポジトリがあり、DoQuery メソッドを使用してデータベースからオブジェクトを選択する場合、外部キーであるフィールドの代わりに null を取得しないように、関連するエンティティの一部をロードする必要があります。
問題は、リポジトリが汎用的であるため、ロードする必要があるプロパティの数やその名前がわからないことです (それらを取得する方法がない限り)。まだこのリポジトリを一般的なままにしていますか?
DoQuery メソッドは次のとおりです。
私は以前にこれを投稿しましたが、それに対する答えは得られませんでしたが、人々が私がプロパティ名を知っていてできると想定する前から、これはもう少し関連性があると思います:
.Include("PropertyNameIKnowNeedsToBeLoaded")
これは、私が以前に投稿した質問です。うまくいけば、これで私がどこにいるのかについて少し情報が得られます。
どんな助けでも大歓迎です。
ありがとう、
マット
.net - 一度に nHibernate ICriteria のすべての関連付けに Fetchmode を設定するにはどうすればよいですか?
他のオブジェクトに多くの関連付けを持つオブジェクトがあります。これらはすべて、nHibernate によって遅延フェッチされます。これは、ほとんどすべての場合に適しています。
特定のシナリオ (この場合は大量のレコードのエクスポート) では、Fetchmode をすべての関連付けで熱心に設定したいと考えています。それぞれを手動で指定することなく、これを行う方法はありますか:
私が見つけたい方法ですが、できませんでした:
ruby-on-rails - すべてを検索するために Rails の熱心な読み込みクエリを最適化する
Rails 2.3.5 アプリケーションでは、次のようなモデルがあります。
そして、私が電話しているとき
コンソールに次のクエリが表示されます。
where句にすべてのfooのIDを含めます。
ID の数が多い場合、これは最適なクエリではないと思います。すべての「バー」をプリロードする必要があります。また、実際には 2 つのモデルではなく、一連のモデルがあります。
熱心な読み込みクエリを次のようにする方法はありますか
すべて検索を使用しているときは?
ruby-on-rails - すべての検索結果に対する Rails Eager Loading
OK、私は熱心な読み込みのいくつかで遊んでいて、次のような 2 つのモデルがあります。
と
クックブックを見つけたら、レシピを熱心に読み込み、次にレシピが :recipetags を熱心に読み込みます。
しかし、私がやりたいことは、レシピを開くたびに、すべての熱心な関連付けを自動的に取り込むことです-基本的に私はやりたいです:
その場合も :recipetags を熱心にロードします。
これは些細なことのように思えますが、実際には Recipe に約 4 ~ 5 個の関連付けがあります。ここではそれらを表示していません。すべての find 呼び出しで :include を明示的に実行する必要はありません。 . 私は Recipe.find をオーバーライドして Recipe モデルでそれを行うことができると仮定していますが、よりクリーンな方法があるかどうか疑問に思っていました....
python - Python APIでのGAEデータストアの熱心な読み込み
1 対多の関係にある 2 つのモデルがあります。
クラスの質問 (db.Model):
questionText = db.StringProperty(複数行 = False)
クラス Answer(db.Model):
answerText = db.StringProperty(複数行 = False)
question = db.ReferenceProperty(Question, collection_name='answers')
Flex でフロントエンドを実装し、pyamf を使用してデータをロードします。
関連する質問を含むすべての回答を読み込もうとすると、すべてが希望どおりに機能し、フィールドにアクセスできます
質問に答える
ただし、質問をロードする場合 (例: Questions.all() によって)、「question.answers」は空/null のままです。
(ただし、サーバー/python 側では問題なく question.answers を修正できます - おそらく遅延読み込みの後)。
すべての質問を回答とともにロードすることは可能ですか?
(これはJPA Java APIで可能であることは知っていますが、pythonはどうですか?)
追加の設定、GQLクエリ、またはdjangoフレームワークを使用して機能させる必要がありますか?
ruby-on-rails - 熱心なロードの後に、このRailsアソシエーションが個別にロードされるのはなぜですか?
積極的な読み込みでN+1クエリの問題を回避しようとしていますが、機能していません。関連するモデルはまだ個別にロードされています。
関連するActiveRecordsとそれらの関係は次のとおりです。
私が使用しているクエリは、Playerのこのメソッド内にあります。
それはスコープと関係がありますか?このtableau_containsメソッドは、より大きなループでいくつかのメソッド呼び出しを実行します。これらの同じオブジェクトがループされて調べられる場所がいくつかあるため、最初は積極的な読み込みを試みました。次に、ループの直前にロードを使用して、最終的に上記のコードを試しましたが、ログのtableau_cardsループ内のCardに対する個々のSELECTクエリがまだ表示されています。tableau_cardsループの直前にもIN句を使用した遅延読み込みクエリが表示されます。
編集:より大きな外側のループを含む以下の追加情報
EDIT2:回答からのヒントで以下のループを修正
EDIT3:目標を含むループに詳細を追加
これがより大きなループです。after_saveのオブザーバー内にあります
ターンクラスの関連コードは次のとおりです。
for player in game.players
プレーヤーをロードするために別のクエリを実行しています。キャッシュされます。つまり、ログにCACHEラベルがありますが、game.playersはすでにメモリにロードされているはずなので、クエリはまったくないと思います。
目標モデルからの別のスニペット: