经过一会儿的搜索后,我决定发布此问题,因为它找不到答案,并向您道歉,如果那里没有类似的问题/答案。
在两个类似设置的SQL服务器上运行下面的查询时,我们会遇到不同的执行计划,这会影响性能,我们需要帮助找出原因。
查询:
SELECT process_id
INTO #temp
FROM revrep_revenue_fact
WHERE process_id = 284
DROP TABLE #temp
服务器A的执行计划
服务器B的执行计划 服务器B http://s2.postimg.org/z9fjrfv4n/server_B.png
您会注意到,服务器B在实际执行计划中具有TOP物理操作,我们正在尝试找出原因。两个查询在索引查找中使用相同的索引。
这是服务器A和服务器B的一些详细信息
服务器A和B都
Windows Server 2008 R2标准Service Pack 1
24GB RAM
64位操作系统
使用(SELECT SERVERPROPERTY('ProductVersion'))获得的SQL Server 2012版本
服务器A SQL版本11.0.3000.0
服务器B SQL版本11.0.5058.0
我们尝试过的
为什么服务器B在执行计划中有TOP?在这个简单的查询示例中,没有实际问题,但是在较大的查询中,TOP的成本增加了,我们发现性能受到了影响。我们将不胜感激调试任何帮助,我们将为您提供可能需要帮助的任何其他信息。
我使用提供的选择查询以sql版本更新了原始帖子。安装sql的服务器是Windows 2008 R2服务器,而安装的sql服务器是2012。按照先前另一个成员的建议,然后删除了该服务器,我们尝试将ROWCOUNT设置为0,而执行计划未更改。查看最新问题
—
Arthur Yegiazaryan 2015年
您可以
—
罗布·法利
GO
在行数行后面加上a吗?您还可以发布Top运算符的属性吗?
罗布(Rob)将GO和属性从顶部添加到原始帖子
—
亚瑟·叶吉扎良
TOP
运营商提出非零SET ROWCOUNT
是连接上之前执行。执行之后,再试一次SET ROWCOUNT 0;
。另外,您发布的SQL版本也不是SQL 2008 R2。SELECT SERVERPROPERTY('ProductVersion');
在两台服务器上运行以获取实际的SQL Server版本。