系统里的查询奇慢无比,但是sqlserver中只要6s,在软件中要40几秒。

最近客户反应,有个报表查询报“查询失败”,然后亲测以后发现真的是“查询失败”,一看数据也就几K条,这个哪有可能呢。

1、检查过程写得是否有问题。

在sqlserver中进行了查询,发现只要6s。基本排除。

2、到了软件里一查询,至少也得40s多,这个不是一个量级的,一个是稍等马上就好,一个是等了又等,然后报错。

那就是开发IDE的问题,按理讲,也不至于会这样,参数类型也都测试过了,发现也没有什么用。

 

解决:

1、将软件中的超时时间设大一些,这样就可以在40s多还不至于报错了。

2、with recompile

很可能是参数嗅探造成。

改一下存储过程:
Alter proc proc_xxx

with recompile
As
......

只要在存储过程中加上 with recompile,这样就解决了。

 

SQL SERVER 在每次查询之后,会生成相应的查询计划,这个查询计划是生成的几个查询计划中最优的一种,但如果查询的参数不同,可能该查询计划不是最优的,
但是数据库多数情况下依然使用当前的查询计划,就这使查询的效率变低,with recompile 使SQL SERVER 不使用缓存的查询计划,强迫使之得新生成查询计划,
在生成查询计划不消耗太多资源的条件下,with recompile 是一个不错的选择。

 

参考:https://bbs.csdn.net/topics/392774866

https://www.cnblogs.com/WizardWu/p/4065874.html

posted @   jiduoduo  阅读(19)  评论(0编辑  收藏  举报
编辑推荐:
· AI与.NET技术实操系列:基于图像分类模型对图像进行分类
· go语言实现终端里的倒计时
· 如何编写易于单元测试的代码
· 10年+ .NET Coder 心语,封装的思维:从隐藏、稳定开始理解其本质意义
· .NET Core 中如何实现缓存的预热?
阅读排行:
· 分享一个免费、快速、无限量使用的满血 DeepSeek R1 模型,支持深度思考和联网搜索!
· 25岁的心里话
· 基于 Docker 搭建 FRP 内网穿透开源项目(很简单哒)
· ollama系列01:轻松3步本地部署deepseek,普通电脑可用
· 按钮权限的设计及实现
历史上的今天:
2022-04-19 eclipse 连接mysql表生成实体类
点击右上角即可分享
微信分享提示