0

我正在使用 SQL Server 2008 R2 并且有一个简单的查询,例如

Select COLA 
from tableA 
where not exists (select 1 
                  from tableB
                  where COLA = tableB.colb)
and tablea.colc = 2

我有 2 台具有相同数据集的相同服务器(从备份中恢复)。在其中一个上,查询在 4 秒内返回另一个(生产服务器)我让它运行 5 分钟,然后将其杀死。两台服务器上的估计计划相同。我还能在哪里以及其他什么地方找到性能差异。我知道有更好的方法来编写查询,但它是我们不应该更改的购买产品中的查询。

4

4 回答 4

0

这可能很明显,但硬件差异是什么?此外,表的大小和它必须解析的数据集是否相同?

您在这些实例上使用哪种索引。生产实例是否在 VM 上运行?

于 2012-05-24T15:25:26.823 回答
0

你试过了SQL Profiler吗?

使用 时SQL Profiler,不要忘记Database NameTrace属性中选择 ,如下所示。

数据库名称 单击此处查看数据库名称设置

数据库表 点击这里查看数据库表设置

于 2012-05-24T15:15:48.967 回答
0

既然你说一个盒子是物理的,另一个是虚拟的,我敢打赌这就是问题所在。虚拟系统必须与盒子的另一(物理)侧共享资源。此外,由于它不在虚拟环境中运行,因此物理盒子可能会进行性能调整。

案例:Denali 具有“处理器关联屏蔽”,可以限制每个实例的处理器使用量。

无论哪种方式,我都愿意打赌这是由于虚拟环境而不是物理环境。

希望这可以帮助!

于 2012-05-24T16:59:29.470 回答
0

由于更多的用户或更多的自动化作业正在运行,统计数据可能已过时或产品服务器上可能存在阻塞。

于 2012-05-24T14:49:02.607 回答