2010-02-20 12 views
4

外連接抓取,NHibernate的documentation說:你應該使用NHibernate和Sql Server 2008的外部連接抓取嗎?

如果你的數據庫支持ANSI或者 的Oracle風格的外連接,外連接 抓取可能被 提高性能限制往返的次數 和從數據庫中刪除(代價爲 可能由 數據庫本身執行的更多工作)。外部聯接提取 允許在單個SQL SELECT中檢索通過 多對一,一對多或一對一關聯連接的對象圖。

我試圖決定我是否應該使用外部聯接在我當前的項目(使用NHibernate的)獲取。爲此,我將要測試加載時間有無外部聯接提取。但是我想知道在使用Sql Server 2008時,整體上是好還是壞的策略。

使用外部連接抓取通常比使用Sql Server 2008更好嗎?

如何確定是否使用它?

感謝

+0

這是一個合法的問題,它很詳細,爲什麼它被拒絕? – 2011-01-12 15:07:54

+2

我不知道是誰downvoted和爲什麼。這對我來說也是一個問題:Upvote from this for this one! – zoidbeck 2011-01-21 11:40:13

回答

4

奇怪的問題(不是通過性能測試和查詢分析等)。 必要時使用外部聯接抓取;某些查詢將需要在某些實體上進行外部聯接抓取。其他查詢不會。所以,如果你不需要它,不要急於使用外連接。 當您使用ICriteria API時,您可以爲每個關聯指定抓取的類型。

這都是優化問題,可以在之後完成。我的意思是:假設你有一個對象圖,其中某些部分是通過延遲加載獲取的,並且在測試之後,如果看起來延遲加載會影響該特定對象圖的性能,請檢查是否可以通過使用渴望加載(通過外部連接獲取fi)。