系统里的查询奇慢无比,但是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 是一个不错的选择。
道法自然
标签:
sqlserver
, TAdoStoredProc
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· AI与.NET技术实操系列:基于图像分类模型对图像进行分类
· go语言实现终端里的倒计时
· 如何编写易于单元测试的代码
· 10年+ .NET Coder 心语,封装的思维:从隐藏、稳定开始理解其本质意义
· .NET Core 中如何实现缓存的预热?
· 分享一个免费、快速、无限量使用的满血 DeepSeek R1 模型,支持深度思考和联网搜索!
· 25岁的心里话
· 基于 Docker 搭建 FRP 内网穿透开源项目(很简单哒)
· ollama系列01:轻松3步本地部署deepseek,普通电脑可用
· 按钮权限的设计及实现
2022-04-19 eclipse 连接mysql表生成实体类