【问题标题】:.Net's ExecuteNonQuery versus MS SQL Direct Query.Net ExecuteNonQuery 与 MS SQL 直接查询
【发布时间】:2013-08-27 11:11:21
【问题描述】:

我有一个 SQL 脚本,它会在修改表后刷新表的相关视图,例如添加新字段。该脚本将通过 ExecuteNonQuery 运行,请参见下面的示例。

 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 服务器在我的 PC 本身和代码上。

谢谢

【问题讨论】:

  • 确保在进行性能比较之前刷新所有缓冲区、缓存等(例如,查看此question)。
  • 你是如何计时的?如果您使用 SQL 分析器,您可能会发现查询的实际执行可能是匹配的,并且它只是增加了额外时间的应用程序代码。

标签: sql-server vb.net tsql


【解决方案1】:

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

【讨论】:

    猜你喜欢
    • 2013-07-31
    • 2023-04-09
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2013-09-18
    • 1970-01-01
    • 2011-04-15
    • 1970-01-01
    相关资源
    最近更新 更多