我們的數據庫服務器默認設置爲「SET NOCOUNT OFF」。我們使用「SET NOCOUNT ON」作爲存儲過程。 據dba報告,所有nhibernate生成的select語句都使用「SET NOCOUNT OFF」。查詢執行需要很長時間。 我們正在努力提高性能。我無法弄清楚爲特定的nhibernate會話或查詢設置「SET NOCOUNT ON」的方法。有人可以對此有一些看法。如何爲Nhibernate生成的選擇語句「SET NOCOUNT ON」
問候
我們的數據庫服務器默認設置爲「SET NOCOUNT OFF」。我們使用「SET NOCOUNT ON」作爲存儲過程。 據dba報告,所有nhibernate生成的select語句都使用「SET NOCOUNT OFF」。查詢執行需要很長時間。 我們正在努力提高性能。我無法弄清楚爲特定的nhibernate會話或查詢設置「SET NOCOUNT ON」的方法。有人可以對此有一些看法。如何爲Nhibernate生成的選擇語句「SET NOCOUNT ON」
問候
您可能誤解了SET NOCOUNT ON的功能以及原因。
SET NOCOUNT沒有如此重大的影響,它成爲一個問題。將其設置爲ON時,不會返回數據只是一個優化。
另一方面,在查詢中將其設置爲ON時,您非常想知道返回了多少結果,這沒有意義。客戶端不必快速檢測有多少結果,而是必須枚舉所有數據以查看返回的行數。
你的服務器將在任何情況下返回數據,所以告訴它不返回它返回的行數是沒有意義的。
您可能有其他性能問題。你應該檢查執行了哪些查詢,你的表是否有適當的索引,以及你是否強迫NHibernate執行比你期望的更多的查詢(可怕的N + 1問題)
我不能給你的NHibernate到set nocount off
的選項,但我知道NHibernate的是取決於計數檢查查詢是succesfull。當您返回錯誤的計數(0)時,nhibernate會認爲出現錯誤並拋出錯誤。
除此之外,我不認爲你會從設置nocount off
獲得很多收益。