2013-04-22 59 views
1

我在SQL Server Management Studio(2008)中执行一个SQL查询,并在C#中使用SqlCommand(.net 3.5)执行相同的查询。SQL查询执行时间差在SSMS和SqlCommand

在Management Studio中查询执行1.6分钟即可完成。相同的查询在C#中使用SqlCommand9分钟

为什么SQL Server Management Studio & SqlCommand之间的巨大差异?

请有人帮我找到解决时间差异的解决方案。

在此先感谢。

查询:

SELECT * INTO [target_table] 
FROM [source_table] WHERE Group_ID IN (1,2,3,4,5,6,7,8,9,10) 

大约100万行。这将复制到target_table &表包含220列。

+0

嗨马克,感谢您的快速评论。我在问题中添加了查询。 – nRk 2013-04-22 17:05:52

+1

好吧,你需要**所有**栏?如果没有 - **指定**你真的需要哪些!另外:有'Group_ID'上的索引吗? – 2013-04-22 17:09:13

+0

是的,我需要所有列和group_id包括索引键(复合主键)。 – nRk 2013-04-22 17:19:57

回答

2

既然你问是什么导致了这两种环境之间的差异,我会试着回答这个问题,而不是如何更快地复制1,000,000条记录这个更大的问题。

question and answer为排除故障提供了一个很好的指导。如果您使用完全相同的命令或存储过程调用并始终在结果中获得此差异,则最可能的罪魁祸首是不同的SET选项。

尝试使用分析器查看在SSMS中执行插入时设置了哪些SET选项。用你的C#例程做同样的事情。比较它们并查看SSMS设置与ADO.NET不同的地方。

+0

谢谢Ann的回复。我可以在URL详细解释:http://www.sommarskog.se/query-plan-mysteries.html – nRk 2013-04-23 09:13:58