在兼容级别80中运行SQL Server 2005数据库是否会对性能产生负面影响?

时间:2008-08-10 16:46:13

标签: sql-server database

我们的软件必须能够在SQL Server 2000和2005上运行。为了简化开发,我们在兼容级别80中运行我们的SQL Server 2005数据库。但是,SQL 2005上的数据库性能似乎比SQL 2000慢一些案例(我们尚未使用基准确认)。将兼容级别升级到90会提高SQL 2005服务器的性能吗?

4 个答案:

答案 0 :(得分:4)

我想我读到的地方,SQL Server 2005数据库引擎应该比SQL Server 2000引擎快30%左右。可能是,您必须在兼容模式90下运行数据库才能获得这些好处。

但我偶然发现两种情况,使用mssql 2005与mssql 2000相比,性能会急剧下降:

  1. 参数嗅探:当使用存储过程时,sql server将在当时正好计算一个执行计划,首先调用该过程。执行计划取决于为该调用指定的参数值。在我们的例子中,通常花费大约10秒的程序在mssql 2005下运行了几个小时。看看herehere

  2. 使用分布式查询时,mssql 2005在有关远程服务器上的排序顺序的假设方面表现不同。默认行为是,服务器将查询中涉及的整个远程表复制到本地tempdb,然后在本地执行连接。解决方法是使用OPENQUERY,您可以在其中精确控制从远程服务器传输的结果集。

答案 1 :(得分:2)

将数据库移到2005年之后

使用完整扫描更新统计数据? 重建索引?

首先尝试,然后再次检查性能

答案 2 :(得分:1)

您在查询中使用子选择吗?

根据我的经验,带有在SQL Server 2000上正常运行的子选择的SELECT语句可以在SQL Server 2005上进行爬网(它可能会慢10倍!)。

进行实验 - 重写一个查询以消除子选择并查看其性能如何变化。

答案 3 :(得分:1)

同样是一个FYI,如果你运行兼容级别90,则不再支持某些内容,例如旧样式外连接(*= and =*)