为什么我的测试环境中的查询执行计划与实时服务器不同



我在测试服务器中恢复了一个sql备份。其中一个主要的查询运行缓慢,所以我用估计的和实际的执行计划对其进行了检查,并做了一些索引来加快速度。

通过检查实时服务器,查看在功能更强大的服务器上查询运行的速度有多慢,估计的执行计划和实际的执行计划都表明某些东西已经优化。

显然,MS SQL Server具有自动调优功能。服务器是否已经优化了实时数据库?我该怎么检查?

编辑:我想我正在寻找查询统计

您应该使用Brent Ozarks"执行后计划";并发布计划。如果它是当前备份,并且所有内容都是相等的,例如数据、行数等。索引都是在线的,SQL Server版本。

例如,SQL版本很重要,因为基数估计器发生了变化。这肯定会改变现状。服务器级别的MAXDOP设置是否相同?如果ypur测试服务器设置为1或2,而另一个有16个CPUS,那么测试服务器查询可能不会得到急需的执行计划。我有一次有一个23000000行的查询,从45分钟到我们修复MAXDOP设置后的一分钟(这是一个可能出错的例子,不是建议。(

所以我用估计的和实际的执行计划来检查它,并做了一些改进来加快它。

我会避免这种情况,并首先尝试理解为什么计划不同。新指数将使情况进一步复杂化。

其他需要考虑的系统级设置包括统计信息和内存设置。同样,你应该发布你的计划,以便更好地理解这一点。

最新更新