我们的数据库服务器默认设置为“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
获得很多收益。