Ruby on Rails のプリロード、イーガーロード、インクルードと結合

それらの違いを理解するために例を見てみましょう。

1つの会社には多くの従業員がおり、会社と従業員の間には1対多のつながりがあります。

プリロード:

プリロードは 2 つのクエリでデータをロードします。

デフォルトの場合、インクルードは 2 つのクエリで関連データもロードします。

プリロードを使用して関連テーブルの条件を追加することはできません。私たちの場合と同様に、従業員の where クエリを追加することはできません。関連するテーブルに where と order by を追加するとエラーが発生します。

熱心なロード:

積極的なロードでは、関連するすべてのデータが 1 つのクエリでロードされます。 Eagrload は左外部結合を使用してデータを結合します。関連するテーブルからデータをフィルタリングするために、where クエリを積極的な読み込みとともに使用することもできます。

結合:

結合は単一のクエリでデータを読み込みます。内部結合を使用してデータを取得します。

関連するテーブルからデータをフィルタリングする場合は結合が適していますが、リレーショナル テーブルからデータをフェッチする場合は、列データごとに個別のクエリをロードします。

複数のクエリを防ぐためのソリューションが含まれています。複数のクエリを実行せずに、関連付けられたテーブルからデータをロードします。

プリロードとして含まれるもの:

ルビー・オン・レール

eager_load として含まれます:

 ルビー・オン・レール

Eager_load は 1 つのクエリですべての列をロードしますが、include は必要に応じてデータをロードします。デフォルトの場合はプリロードとして機能し、関連するテーブルに追加のクエリがある場合はeager_load として機能します。

レールカーマ 10 年以上にわたる最先端のソリューションの専門知識を、 Ruby on Rails アプリケーション 既存の Rails アプリケーションを強化します。 RoR フレームワークを深く理解した専門家チームを擁する RailsCarma は、ビジネス ニーズをより迅速かつコスト効率の高いカスタマイズされたアプリケーションの開発に変換するのに役立ちます。アジャイルプラクティスを当社に導入することで、 RoR開発、模範的な導入後のメンテナンスとサポートにより、エラーのないコーディングを次のレベルに引き上げます。 我々に教えてください お客様のビジネス ニーズについて、当社がお客様の Rails 開発目標を確実な ROI で実現できるよう支援します。

関連記事

コメントを残す

メールアドレスが公開されることはありません。 が付いている欄は必須項目です

jaJapanese