我正在与刚刚从SQL 2000升级到SQL 2008的客户端一起工作,他们的查看查询时间也大大增加。
我看过这些观点,看不出有什么不妥。当我直接在服务器上运行视图时,时间还可以。当我通过Management Studio远程运行时,时间从2秒到大约30秒。
所以,我已经尝试通过将ARITHABORT设置为ON(基于一些文章)对测试副本进行实验,并且时间也会远程下降。
因此,设置ARITHABORT似乎就是答案,但在应用于实时数据库之前,我想了解原因。我认为这与零鸿沟的严重程度有关,但为什么它应该有助于查看查询时间?
答案 0 :(得分:6)
添
我认为在SQL Server 2000中,如果您已将ARITHABORT设置为OFF,则查询优化器在开发查询执行计划时不会考虑索引视图索引。因此,如果最佳计划使用视图索引,那就很重要了。我不知道是否仍然如此,但是当你查看查询计划时,你可以专门看看更快的计划是否提到了一个视图索引。
我不知道ARITHABORT与索引视图有关的具体原因,但SET选项会影响很多事情,ARITHABORT的情况几乎不稳定。您可以查看this link。
这种行为中的某些行为受兼容性级别的影响也不是不可能的。如果任何已升级的数据库设置为80或90级,您可能会看到是否真的需要这样做。
答案 1 :(得分:3)
答案 2 :(得分:2)
我倾向于认为ARITHABORT设置是红鲱鱼。您的查询计划在测试和生产系统之间是否有所不同?您的表在它们包含的数据中是否为IDENTICAL,并且您的统计数据是否在两台服务器上都是最新的,具有相同的索引?我先检查一下。
答案 3 :(得分:1)
出于性能原因,您应该始终在登录会话中打开ArithAbort。我刚刚在2008 R2数据库上遇到多个proc的问题,并发现Microsoft更新了2012年的SQL服务器文档,并说明了这一点。
http://msdn.microsoft.com/en-us/library/ms190306.aspx
始终在登录会话中将ARITHABORT设置为ON。将ARITHABORT设置为OFF会对查询优化产生负面影响,从而导致性能问题。
⚠️警告强>
SQL Server Management Studio的默认ARITHABORT设置为ON。 将ARITHABORT设置为OFF的客户端应用程序可能会收到不同的查询计划,因此很难对性能较差的查询进行故障排除。也就是说,相同的查询可能在管理工作室中快速执行但在应用程序中速度较慢。使用Management Studio对查询进行疑难解答时,请始终匹配客户端ARITHABORT设置。
答案 4 :(得分:0)
[这不是一个很好的答案。]我也遇到过这个问题,但更奇怪的是我现在无法再现以前糟糕的表现!即使将该选项设置为OFF,相关SQL现在也会像以前一样快速运行。 [我怀疑缓存现在已经避免了所设置的任何差异。]
答案 5 :(得分:0)
当ARITHABORT
为OFF
时,(持久)计算列are not used上的索引。一般情况下,Microsoft建议always turn it ON
。默认情况下OFF
的唯一原因(在某些情况下)是向后兼容性。