我有一个 SQL 代码,用于从 2 个数据库中外连接 4 个表。每个表有 30000 行。在 SQL 2014 中,查询耗时 0 秒。升级到 SQL 2016 后,我使用的每个 JOIN 查询都出现了性能下降,相关查询需要 1 分 30 秒才能完成。我进行测试时未使用服务器。我如何查找问题所在?我尝试运行 SQL Profiler 并向机器添加资源(它是一台拥有整个 IBM x3650 的虚拟机)。
答案1
好的,我明白了,我必须重建统计数据EXEC sp_MSforeachtable @command1='UPDATE STATISTICS ? WITH FULLSCAN'
答案2
更新所有统计数据后,比较两个版本的计划。
您可以使用查询故事来监控并强制执行某些计划。