我们的客户报告了一个有趣的现象,我无法解释:在他们将数据库兼容性级别从2016更改为2008,然后又更改为2016年后,从存储过程使用的函数的性能显著提高-从9秒提高到4秒。他们不执行2008兼容性的过程,只重置兼容性。 我执行了几次该过程,然后颠倒了兼容性,并再次使用相同的参数执行相同的过程-它使用相同的计划,但完成的速度要快得多。可能的原因是什么?下面是我用来比较性能和计划的查询。 Query plan
我使用的应用程序是由恐龙编写的,在sql查询中使用*=和=*运算符。这些查询在10个左右的表上连接,我有大约500个这样的查询。我所能做的就是升级现有的软件,而不是编写任何代码。因此,更新它们中的查询生成器函数是不可行的。
遗憾的是,我应该将应用程序升级为使用SQL server 2014,而不是2005年。2014年,许多运营商的向后兼容性被取消。因此,如果可以的话,我需要在SQL server 2014中启用某种兼容性选项。但是,我不知道是否有这样的事情,如果是,如何启用它。