11

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

4

4 回答 4

5

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

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

  1. 参数嗅探:当使用存储过程时,sql server 会在此时计算出一个执行计划,你首先调用该过程。执行计划取决于为该调用提供的参数值。在我们的例子中,通常需要大约 10 秒的程序在 mssql 2005 下运行了几个小时。看看这里这里

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

于 2008-10-07T13:46:25.677 回答
2

在您将数据库移至 2005 年之后,您是否

使用全面扫描更新统计信息?重建索引?

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

于 2008-08-10T16:59:30.227 回答
1

仅供参考,如果您运行兼容级别 90,则不再支持某些内容,例如旧式外连接(*= and =*)

于 2008-08-10T17:01:28.523 回答
1

您是否在查询中使用子选择

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

做一个实验——重新编写一个查询以消除子选择,看看它的性能如何变化。

于 2008-08-28T20:33:29.747 回答