2013-08-27 36 views
1

我有一个SQL脚本,一旦表被修改就会刷新表的从属视图,如添加新字段。该脚本将通过ExecuteNonQuery运行,请参阅下面的示例。.Net的ExecuteNonQuery与MS SQL直接查询

Using refreshCommand As New SqlClient.SqlCommand("EXEC RefreshDependentViews 'Customer','admin',0", SqlClient.SqlConnection, SqlClient.SqlTransaction) 

    refreshCommand.ExecuteNonQuery() 

End Using 

在被执行时将采取4-5秒,但是当我只复制脚本,并通过MS SQL直接运行,只需要2-3秒以上代码。

我的问题是,他们为什么有不同的时间间隔?

请注意,MS SQL服务器是在我的电脑本身,也是代码。

由于

+0

确保在进行性能比较之前刷新所有缓冲区,缓存等(例如,请参阅此[问题](http://stackoverflow.com/q/564717/21567))。 –

+0

你是如何计时的?如果您使用SQL事件探查器,您可能会发现查询的实际执行可能匹配,并且它只是增加额外时间的应用程序代码。 –

回答

0

SqlClient和SSMS具有不同的连接级选项(选项SET)默认,这有时可能是一个因素。我也想知道两个事物的隔离级别是什么,如果你在你的代码中使用TransactionScope等等,这可能会更复杂。当时也可能只是有不同的系统负载。基本上,很难说这一点:但确实有一些事情会影响到这一点。