记一次C#调用存储过程执行缓慢,但在数据库中执行却很快的问题

问题背景:
公司项目更新一个功能,所有的会员可以申请代理一款产品。提交申请时会传递会员信息代理产品信息等,大概有10个参数。可能由于前期申请代理的人比较少,所以比较正常。公司做了一次促销活动后,量突然大了起来,这个时候,客户反馈,申请代理时,APP反应很慢,大概需要等待10秒左右才反馈结果。经过APP端及JAVA后端同时测试发现是我提供的API响应速度比较慢。

问题排查:
1、通过测试服务器调用API测试发现,响应速度正常(说明代码没问题,至少是量少的情况下没问题)。
2、通过正式服务器数据库调用存储过程直接执行,响应速度正常。
3、通过正式服务器调用API测试发现,响应速度比较慢。
4、使用日志跟踪API各个模块执行执行,最后发现,调用存储过程执行返回结果这一步,响应速度比较慢。

至此,问题已经找到了:代码调用存储过程执行慢,待使用数据库管理器执行就很快。

猜测原因:sql预编译的问题。
解决方案:使用WITH RECOMPILE强制SQL重新编译(一般我们编写存储过程是不会加这个 WITH RECOMPILE 的)。


存储过程示例
©著作权归作者所有,转载或内容合作请联系作者
【社区内容提示】社区部分内容疑似由AI辅助生成,浏览时请结合常识与多方信息审慎甄别。
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

相关阅读更多精彩内容

友情链接更多精彩内容