問題タブ [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.

0 投票する
1 に答える
2676 参照

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 が含まれているトピック画像を見つけました。画像を手動でトピックに追加する方法はありますか?

ありがとう

0 投票する
1 に答える
655 参照

linq - LoadOptionsを使用せずに多対多の読み込み/プリフェッチを熱心に行う-LinqtoSql

多対多の関係を通じていくつかのエンティティをプリフェッチする必要がある状況があります。つまり、それは古典的なBlogPost <- BlogPostTag -> Tag状況のようなものです。

はい、LoadOptionsを認識していますが、Webアプリケーションであり、リクエストパターンごとに1つのデータコンテキストを使用しているため、使用できません。

また、プロジェクションを使用して多対多の関係をプリフェッチすることはできないようです。はい?いいえ?

IQueryable<Tag>一連のブログをもとに帰りたいです。私ができる最善のことはIQueryable<IEnumerable<Tag>>、次のようにしてそれを返すことです。

それを平らにできますか?明らかな何かが欠けていますか?私が取ることができる別のアプローチはありますか?

いいえ、ORMを変更することはできません;-)

0 投票する
3 に答える
357 参照

asp.net-mvc - ロードしたいプロパティの名前がわからない場合、どうすれば熱心なロードを実行できますか?

汎用リポジトリがあり、DoQuery メソッドを使用してデータベースからオブジェクトを選択する場合、外部キーであるフィールドの代わりに null を取得しないように、関連するエンティティの一部をロードする必要があります。

問題は、リポジトリが汎用的であるため、ロードする必要があるプロパティの数やその名前がわからないことです (それらを取得する方法がない限り)。まだこのリポジトリを一般的なままにしていますか?

DoQuery メソッドは次のとおりです。

また、リポジトリ全体の元のコードへのリンク。

私は以前にこれを投稿しましたが、それに対する答えは得られませんでしたが、人々が私がプロパティ名を知っていてできると想定する前から、これはもう少し関連性があると思います:

.Include("PropertyNameIKnowNeedsToBeLoaded")

これは、私が以前に投稿した質問です。うまくいけば、これで私がどこにいるのかについて少し情報が得られます。

どんな助けでも大歓迎です。

ありがとう、
マット

0 投票する
2 に答える
327 参照

.net - 一度に nHibernate ICriteria のすべての関連付けに Fetchmode を設定するにはどうすればよいですか?

他のオブジェクトに多くの関連付けを持つオブジェクトがあります。これらはすべて、nHibernate によって遅延フェッチされます。これは、ほとんどすべての場合に適しています。

特定のシナリオ (この場合は大量のレコードのエクスポート) では、Fetchmode をすべての関連付けで熱心に設定したいと考えています。それぞれを手動で指定することなく、これを行う方法はありますか:

私が見つけたい方法ですが、できませんでした:

0 投票する
1 に答える
1377 参照

ruby-on-rails - すべてを検索するために Rails の熱心な読み込みクエリを最適化する

Rails 2.3.5 アプリケーションでは、次のようなモデルがあります。

そして、私が電話しているとき

コンソールに次のクエリが表示されます。

where句にすべてのfooのIDを含めます。

ID の数が多い場合、これは最適なクエリではないと思います。すべての「バー」をプリロードする必要があります。また、実際には 2 つのモデルではなく、一連のモデルがあります。

熱心な読み込みクエリを次のようにする方法はありますか

すべて検索を使用しているときは?

0 投票する
2 に答える
5371 参照

ruby-on-rails - すべての検索結果に対する Rails Eager Loading

OK、私は熱心な読み込みのいくつかで遊んでいて、次のような 2 つのモデルがあります。

クックブックを見つけたら、レシピを熱心に読み込み、次にレシピが :recipetags を熱心に読み込みます。

しかし、私がやりたいことは、レシピを開くたびに、すべての熱心な関連付けを自動的に取り込むことです-基本的に私はやりたいです:

その場合も :recipetags を熱心にロードします。

これは些細なことのように思えますが、実際には Recipe に約 4 ~ 5 個の関連付けがあります。ここではそれらを表示していません。すべての find 呼び出しで :include を明示的に実行する必要はありません。 . 私は Recipe.find をオーバーライドして Recipe モデルでそれを行うことができると仮定していますが、よりクリーンな方法があるかどうか疑問に思っていました....

0 投票する
1 に答える
407 参照

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フレームワークを使用して機能させる必要がありますか?

0 投票する
3 に答える
4303 参照

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はすでにメモリにロードされているはずなので、クエリはまったくないと思います。

目標モデルからの別のスニペット:

0 投票する
2 に答える
1614 参照

ruby-on-rails - サブクラスの熱心な読み込み関連

次の(簡略化された)クラス階層があります。

すべての親オブジェクトを取得し、それらが子オブジェクトの場合は、:other 関連付けを積極的にロードさせたいと考えています。だから私はできることを望んでいました:

しかし、恐れていたとおり、「'other' という名前の関連付けが見つかりませんでした。スペルを間違えたのでしょうか?」というメッセージが表示されます。

このシナリオで熱心な読み込みを確立する最善の方法は何ですか?

[編集] リクエストに応じて、より具体的な例を次に示します。

  • 親 = イベント
  • 子 = PostEvent
  • その他=ポスト

上記の例のように、さまざまな種類のイベントをすべて独自のプロパティ (一部は他のオブジェクトへの参照) と共にログに記録したいと考えています。同時に、発生したすべてのイベントをリストできるようにしたいので、親クラスです。

0 投票する
2 に答える
1221 参照

ruby-on-rails - Rails Eager Loading Question Find(:all, :include => [:model])

トピックとプロジェクト モデルがあります。それらの間に多対多のお尻があります(HABTM 1)。

トピックのインデックス ページに、各トピックのプロジェクト数を表示したいと考えています。ので、私は持っています

私のコントローラーでは、これまでのところとても良いです。問題は、プロジェクト モデルが非常に大きいため、クエリがまだ非常に遅いことです。

* を選択せず​​に名前または ID だけを選択するように 2 番目のクエリを作成する方法はありますか? counter_cache は HABTM Ass でサポートされていないため、自分で実装したくありません...この 2 番目のクエリを高速化する方法はありますか?

プロジェクトオブジェクト全体をロードせずにカウントを取得するだけです...

前もって感謝します、

ニコラス・ホック・イサザ