2013-08-27 65 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等等,這可能會更復雜。當時也可能只是有不同的系統負載。基本上,很難說這一點:但確實有一些事情會影響到這一點。