我们有一个运行XML EXPLICIT查询的SQL 2005服务器非常愉快,没有性能问题。不幸的是,机器(Windows 2003服务器)已经死亡,因此我不得不紧急提供Windows 2012机器。数据库文件已重新连接到2008r2和“work”。然而,查询非常缓慢。每次查询时5秒,之前它们处于.x次。这使得他们无法使用的网站无法使用。 我已经重建了所有索引,并且我在所有机器上都运行了DBCC FREEPROCCACHE,但这没有明显的效果。我还能看到什么?我无法在盒子上的2016 SQL实例上运行它们,因为有些查询使用非ANSI * =连接(我说它已经老了!)。
答案 0 :(得分:0)
如果您的查询之前运行正常,请考虑其他更改 - 查询计划程序和实际执行计划可能有助于查明这一点。
当您说您加入时,您是否考虑过加入了多少?如果新机器在数据库中有更多数据,那么连接可能会很快变得非常昂贵。这可以通过减少您需要的数据来完成,因为较少的数据处理意味着更少的工作量。
在运行查询之前是否可以预先计算某些内容,或者更改以使其运行得更快?
我假设您执行SELECT,但是如果您更新或删除数据,则还需要重新计算索引,这需要很长时间(在这种情况下,禁用索引,插入所有需要的数据,然后重新计算索引)
您没有提及任何XML处理,但已标记了for-xml标记。如果您对XML数据执行连接,则使用Xquery获取数据也可能会提高性能。