当从.Net应用程序调用SQL函数与在Management Studio中进行相同调
发布时间:2020-12-12 06:27:10 所属栏目:MsSql教程 来源:网络整理
导读:我们的测试和开发环境中存在一个问题,其功能在从.Net应用程序调用时运行得非常慢.当我们直接从管理工作室调用此函数时,它工作正常. 以下是分析时的差异: 从应用程序: CPU:906 阅读:61853 写道:0 持续时间:926 来自SSMS: CPU:15 阅读:11243 写道:0
我们的测试和开发环境中存在一个问题,其功能在从.Net应用程序调用时运行得非常慢.当我们直接从管理工作室调用此函数时,它工作正常.
以下是分析时的差异: 来自SSMS: 现在我们已经确定,当我们重新编译该函数时,性能将返回到我们期望的状态,并且从应用程序运行时的性能配置文件与从SSMS运行时获得的性能配置文件相匹配.它会以随机间隔开始再次减速. 我们没有在生产中看到这一点,但它们可能部分是因为每周都会重新编译所有内容. 那么可能导致这种行为的原因是什么? 编辑 – -- create set of local variables for input parameters - this is to help performance - vis a vis "parameter sniffing" declare @dtDate_Local datetime,@vcPriceType_Local varchar(10),@iTradingStrategyID_Local int,@iAccountID_Local int,@vcSymbol_Local varchar(10),@vcTradeSymbol_Local varchar(10),@iDerivativeSymbolID_Local int,@bExcludeZeroPriceTrades_Local bit declare @dtMaxAggregatedDate smalldatetime,@iSymbolID int,@iDerivativePriceTypeID int select @dtDate_Local = @dtDate,@vcPriceType_Local = @vcPriceType,@iTradingStrategyID_Local = @iTradingStrategyID,@iAccountID_Local = @iAccountID,@vcSymbol_Local = @vcSymbol,@vcTradeSymbol_Local = @vcTradeSymbol,@iDerivativeSymbolID_Local = @iDerivativeSymbolID,@bExcludeZeroPriceTrades_Local = @bExcludeZeroPriceTrades 解决方法这通常是因为您在SSMS连接中获得了不同的执行计划.通常与参数嗅探问题相关,其中计划生成时具有对于其他参数值次优的特定值.这也解释了为什么重新编译会解决问题.这个帖子似乎有一个很好的解释 Parameter Sniffing (or Spoofing) in SQL Server(编辑:李大同) 【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容! |
相关内容
- 利用SQLServer用户自定义函数实现编号自增长
- QT freetds unixODBC 连接sqlserver2008 解决中文乱码问题
- sql-server – SQL Server 2008 – 登录失败.登录名来自不可
- IOS 数据库升级数据迁移的实例详解
- SQL多表连接查询实例分析(详细图文)
- sql-server – 模仿group_concat()与GROUP BY结合使用
- Sqlserver存储过程中经常使用的循环
- sql-server – 在SQL Server 2014中如何按时间间隔分组?
- mysql优化limit查询语句的5个方法
- asp.net连接查询SQL数据库并把结果显示在网页上(2种方法)