4

外部結合フェッチについて、Nhibernate のドキュメントは次のように記載されています。

データベースが ANSI または Oracle スタイルの外部結合をサポートしている場合、外部結合フェッチは、データベースとの間の往復回数を制限することでパフォーマンスを向上させる可能性があります (データベース自体によって実行される作業が増える可能性があります)。外部結合フェッチを使用すると、多対 1、1 対多、または 1 対 1 の関連付けによって接続されたオブジェクトのグラフを、単一の SQL SELECT で取得できます。

現在のプロジェクト ( NHibernateを使用) で外部結合フェッチを使用する必要があるかどうかを判断しようとしています。そのために、 outer join fetchingを使用した場合と使用しない場合のロード時間をテストします。しかし、 Sql Server 2008を使用する場合、全体としてそれが良い戦略か悪い戦略かを知りたいです。

一般的に、Sql Server 2008 を使用しないよりも外部結合フェッチを使用する方が良いですか?

使うか使わないかはどうやって決めるの?(パフォーマンス テストとクエリ プロファイリング以外)

ありがとう

4

1 に答える 1

4

奇妙な質問です。必要に応じて外部結合フェッチを使用します。特定のクエリでは、一部のエンティティで外部結合フェッチが必要になります。他のクエリはしません。そのため、必要がない場合は、外部結合を使用して熱心にフェッチしないでください。ICriteria API を使用すると、関連付けごとに取得の種類を指定できます。

それはすべて最適化の問題であり、後で行うことができます。つまり、特定の部分が遅延読み込みによって取得されるオブジェクト グラフがあるとします。テスト後、遅延読み込みがその特定のオブジェクト グラフのパフォーマンスに悪影響を及ぼしていると思われる場合は、eager を使用して何かを得ることができるかどうかを確認してください。ロード (外部結合フェッチ fi 経由)。

于 2010-02-20T20:27:27.893 に答える