sqlserver中执行sql比较快,使用ado.net却比较慢

lxj1004 2019-07-08 06:14:34
相同的存储过程、相同的参数。
原来是在Api中执行、发现时间很长,使用Sql Profiler 跟踪语句拿到MSSMS中执行很快的。
再次使用Sql Profiler 查看结果如下图:



...全文
563 4 打赏 收藏 转发到动态 举报
写回复
用AI写文章
4 条回复
切换为时间正序
请发表友善的回复…
发表回复
天涯特困生 2019-07-24
  • 打赏
  • 举报
回复
快和慢的case中,输入参数完全一样吗?
1. 如果不一样, 则可能是parameter sniffing. 采取方案有(1)recompile (2)optimizer for variant hint (3) plan guide (4)dynamic SQL
... 等等。他们各有优劣,要依具体场景来决定。
2.如果完全一样,(1)检查连接options (2)对比二者执行计划,确认二者一致,尤其是implicit data type conversion. 例如,在某些java连接库默认以unicode传递参数,导致隐式转换,进而无法使用索引。(3)检查应用逻辑。例如某些应用在取到数据,然后loop datareader做某些处理,如果结果集大或处理复杂,自然总体处理时间变长。

除此之外,还有非常多的可能,比如不同的网络环境, 不同的系统负载 等等
haiancdp0503 2019-07-09
  • 打赏
  • 举报
回复
会不会是内存不够了,索引啥的跑到虚拟内存了
Hello World, 2019-07-09
  • 打赏
  • 举报
回复
也遇到过这问题,开始是一个整的查询,总出问题,尝试过加入WITH RECOMPILE选项,过一段时间又回老样子。
后来把查询的一部份分拆到临时表再查询就好了,几个月了也还正常的。
吉普赛的歌 2019-07-09
  • 打赏
  • 举报
回复 1
很可能是参数嗅探造成。

改一下存储过程:
Alter proc proc_xxx

with recompile
As
......

27,580

社区成员

发帖
与我相关
我的任务
社区描述
MS-SQL Server 应用实例
社区管理员
  • 应用实例社区
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧