【问题标题】:Stored procedure called from C# executes 6 times longer than from SQL Management studio从 C# 调用的存储过程的执行时间是从 SQL Management Studio 调用的 6 倍
【发布时间】:2011-05-24 01:24:02
【问题描述】:

我有搜索存储过程,这是我的性能瓶颈。

为了控制所发生的事情,我在 SP 中添加了所有参数的日志记录以及执行时间。

我注意到,当我从 MIcrosoft SQL server management Studio 调用 SP 时,执行时间是 1.3-1.6 秒,但是当我从 C# 调用它时,需要 6-8 秒(!!!)

Parameters                                                            | Time (ms)
"tb *"TreeType:259Parents:212fL:13;14fV:0;lcid:2057min:0max:10sort:-1 | 6406      
"tb *"TreeType:259Parents:212fL:13;14fV:0;lcid:2057min:0max:10sort:-1 | 1346      

SP 是用 LINQ 调用的。登录设置相同。 SP使用全文搜索

这是什么原因造成的?

【问题讨论】:

  • 我不确定 Microsoft SQL 缓存系统。尝试从管理工作室运行存储过程,然后从 C# 运行。结果会与当前不同吗?
  • @Anton:我可以得到相同的结果,而不取决于调用顺序。实际上,这个列表是按 id desc 排序的,所以最近的请求是最后的。
  • 您是否尝试使用SqlCommand 而不是 LINQ?您可以另外使用Prepare 方法。您使用本地 SQL Server 吗?存储过程返回什么数据?

标签: linq performance tsql


【解决方案1】:

为了定位此类问题,最好的工具是 SQL Profiler,它记录了对数据库的准确调用。

对我来说,区别在于 SQL 示例传递的 novalue 被 '' 替换,而 C# 传递的 null 值。

【讨论】:

    猜你喜欢
    • 2011-09-28
    • 1970-01-01
    • 1970-01-01
    • 2017-10-02
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2018-06-15
    • 2010-10-01
    相关资源
    最近更新 更多