それらの違いを理解するために例を見てみましょう。
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 で実現できるよう支援します。