SQL Server查询性能测试

时间:2018-05-01 10:14:38

标签: sql-server performance tsql

我有2个服务器安装了SQL服务器,并且完全相同的数据库。数据库有一个存储过程,在服务器A上需要35分钟,但在服务器B表上需要9个小时。该程序主要更新几个表格,但数据完全相同,所以我不明白为什么时差如此巨大

有人可以告诉我一个虚拟查询,我可以在两台服务器上运行(与当前数据无关)来比较性能。例如插入500万行,然后全部更新。

仅供参考,服务器B规格是更高的规格,相关表上的索引相同,服务器B SP执行时没有阻塞

1 个答案:

答案 0 :(得分:1)

有很多可能性,但如果两个环境中的数据和硬件应该相似,那么它的parameter sniffing可能会继续吗?

基本上,这意味着第一次运行程序时,会使用当前参数进行计划,并且该计划随程序一起保存。下次运行该过程时,它会重用旧计划,这可能对新参数非常不利。

您可以尝试添加" WITH RECOMPILE"看看是否会彻底改变表现

ALTER PROCEDURE <procedure>
<Parameters>
WITH RECOMPILE
AS