自 SQL Server 2000 以来,我们一直在使用多个嵌套查询来实现报告目的。
select * from
(select * from t1) t1
inner join
(select * from t2) t2
on........
我们最近将数据库从 SQL Server 2000 Enterprise 升级到 SQL Server 2008 Standard。我们注意到其中一些旧查询现在运行速度非常慢甚至超时。数据库的大小确实没有太大变化。
我们通过用临时表替换一些嵌套查询来解决上述问题。
但是,我们仍然不确定嵌套是否运行缓慢,现在临时表是否运行得更好。我们没有对 join 或 where 子句进行任何更改。
任何见解或想法都会有所帮助。
最佳答案
一般来说,单个查询比使用临时表和多个查询慢的情况是不常见的。因此,升级后的 SQL Server 似乎可能不了解有关数据的最新信息。
升级 SQL Server 后,您应该确保有关数据库的信息是最新的。您绝对应该做的一件事是更新数据库表的统计信息。
您可能还会发现,使用较新的 SQL Server 版本可能有更好的方法来运行查询。因此,在更新统计信息后,您可以查看当前 SQL Server 版本的新功能。
关于sql - 数据库版本升级后子查询性能变差,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/3765203/