Low*_*n M 7 performance sql-server execution-plan query-performance
我有一段 SQL 似乎在环境 A 中运行得非常快,但完全相同的查询在环境 B 中运行得非常慢!
环境应该是相同的,所以我应该做什么和/或我应该在哪里查看查询为什么不执行相同?
Low*_*n M 13
SQL Server 内部和外部的许多因素都可能导致同一查询在不同环境中的执行情况不同,即使它们的配置接近完全相同,其中任何一个因素都可能导致非常不同的查询计划和性能。
服务器
实例
数据库
考虑到所有这些,在许多情况下根本不可能在不同环境中完美复制数据库的每个方面也就不足为奇了。虽然测试可以很好地确定查询在每个环境中的执行情况,但如果环境之间存在差异也就不足为奇了。在开发新查询时,通常需要在它转向生产时进行额外的调整。
通常,在一个环境中调优较慢的查询不应导致生成的执行计划出现回归,因此这是一个调整索引、统计信息或查询本身以实现整体改进的机会。
最后一点:较低的环境规模不足,通常不应期望提供与生产或预生产环境相同的性能。
更多资源:
小智 9
其他答案很好,但我想补充一点,您应该考虑环境 B 中的数据量,以及与其他查询的任何争用。
一些 SQL 查询单独显示没有性能问题(例如表中有 1000 行,没有其他查询正在运行),但表中有 10,000,000 行可能会令人恐惧地显示(例如参数嗅探问题),和/或其他可能写入、更新的查询或锁定所涉及的表。
我同意首先检查硬件/环境/配置匹配的其他答案,但如果没有明显的问题出现,请开始查看查询执行计划、运行 SQL Profiler 等。