0

我们有一个运行 XML EXPLICIT 查询的 SQL 2005 服务器,没有任何性能问题。不幸的是,这台机器(一台 Windows 2003 服务器)死了,所以我不得不紧急提供一个 Windows 2012 机器。数据库文件已重新附加到 2008r2 并“工作”。但是查询速度非常慢。每个查询 5 秒,而以前它们是 .x 次。这使得他们支持的网站无法使用。我已经重建了所有索引,并在所有机器上运行了 DBCC FREEPROCCACHE,但这并没有明显的效果。我还能看什么?我无法在盒子上的 2016 SQL 实例上运行它们,因为某些查询使用非 ANSI *= 连接(我说它很旧!)。

4

1 回答 1

0

如果您的查询之前运行良好,请考虑其他发生了什么变化 - 查询计划器和实际执行计划可能有助于查明这一点。

当你说你加入时,你有没有考虑你加入多少?如果新机器的数据库中有更多数据,那么连接可能很快就会变得异常昂贵。这可以通过减少您需要的数据来完成,因为更少的数据处理意味着更少的工作量。

在运行查询之前,您是否可以预先计算一些内容,或者进行更改以使其运行得更快?

我假设你做了一个 SELECT,但是如果你 UPDATE 或 DELETE 数据,索引也需要重新计算,这需要很长时间(在这种情况下,禁用索引,插入所有需要的数据,然后重新计算索引)

您没有提到任何 XML 处理,但标记了 for-xml 标记。如果您的连接是在 XML 数据上执行的,那么使用 Xquery 获取数据也可能会提高性能。

于 2017-05-24T08:50:36.810 回答