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

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

时间:2024-04-19 16:46:00浏览次数:23  
标签:中要 recompile 6s sqlserver 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

标签:中要,recompile,6s,sqlserver,40,查询,计划,软件
From: https://www.cnblogs.com/jiduoduo/p/18146313

相关文章

  • 牛客周赛 Round 40
    A小红进地下城点击查看代码#include<bits/stdc++.h>usingnamespacestd;intmain(){ strings,t; cin>>s; cin>>t; if(s==t) { cout<<"Yes"<<endl; } else { cout<<"No"<<endl; } return0;}B小......
  • 20240418-这事我能吹一年/鱼梓酱你真是三班背刺王
    哈哈哈哈今天下午体考我tm满了!!!哈哈哈哈哈哈哈哈哈哈哈哈哈哈哈哈哈哈哈哈哈哈哈哈哈哈哈哈哈哈哈哈哈哈哈哈哈哈哈哈哈哈哈哈哈哈哈哈哈哈哈哈哈哈哈哈哈哈哈哈哈哈哈哈哈哈哈哈哈哈哈哈哈哈哈哈哈哈哈哈哈哈哈哈哈哈哈哈哈哈哈哈哈哈哈哈哈哈哈哈哈哈哈哈哈哈哈哈哈哈哈哈哈哈......
  • P4423 / YC271A [ 20240411 CQYC省选模拟赛 T1 ] 三角形(triangle)
    题意给定\(n\)个点,求平面最小三角形周长。Sol其实挺简单一算法,一直没学。先随机转个∠,然后按照\(x\)排序。考虑分治。注意到分治左右两边的答案对当前可用的区间有限制。将满足限制的点按照\(y\)排序。这里可以归并做到一只\(log\)。然后集中注意力,发现对于每个点......
  • 20240416
    T1TopcoderSRM573div1Medium-SkiResorts一定存在一种方案使得最终所有高度都是原高度序列中出现过的数。考虑倒着来,\(dp[i][j]\)表示\(i\)高度变成原来\(j\)的高度之后能够从\(n\)到达的最小代价。转移是简单的,但是需要使用dijkstra。代码#include<iostream......
  • 20240415
    T1TopcoderSRM579div1Medium-TravellingPurchasingMan发现行动肯定是从当前点沿最短路走到目标然后等开门然后买然后去下一个目标。所以先对每个关键点为原点跑一遍最短路,然后状压一下,\(dp[S][i]\)表示已经买了\(S\)集合,当前在\(S\)中的\(i\)。转移就枚举目的地,看过......
  • [ABC240E] Ranges on Tree 题解
    [ABC240E]RangesonTree题解思路解析由题意可知,只要一个点的所有儿子节点都被确定了,那么当前节点也就被确定了。也就是说,只要确定了所有叶子节点,也就能一层层地确定所有节点,而叶子节点没有儿子节点不受此条件的约束,同时我们希望\(\max\limits^N_{i=1}R_i\)最小,所以我们把所......
  • ABC240 复盘
    ABC240复盘[ABC240C]JumpingTakahashi思路解析显而易见,求是否可能,用可能性dp即可。code#include<bits/stdc++.h>usingnamespacestd;constintN=1e2+10,M=1e4+10;intn,x,a[N],b[N];boolf[N][M];intmain(){ cin>>n>>x; for(inti=1;i......
  • 40岁女人人生感悟的句子
    【40岁女人人生感悟的句子】每个40岁的女人都有自己的人生感悟,经历了青春的风华,步入成熟的年纪,她们已经拥有了足够的人生经验和智慧。在这个年龄段,很多女性开始思考生活的意义,反思过去的选择,展望未来的可能。以下是一些40岁女人人生感悟的句子,或许能给你一些启发。"人生最重要......
  • net8 linux docker sqlserver报错error: 31 - Encryption(ssl/tls) handshake failed)
    asp.netcore升级到8.0后遇到数据库不能连接问题?_已解决_博问_博客园(cnblogs.com) 中文提示:连接数据库过程中发生错误,检查服务器是否正常连接字符串是否正确,错误信息:Aconnectionwassuccessfullyestablishedwiththeserver,butthenanerroroccurredduringthep......
  • 快速测试连接SQLServer数据库的方法
    微软的SQLServer数据库应该是中小企业中使用最多的数据库,一般个人测试环境也都是用的它。下面介绍一种快速测试SQLServer数据库连接性的方法:1.新建一下记事本,将后缀名修改为udl;2.选中当前文件,右键打开文件属性,点选“提供程序”,选中MicrosoftOLEDBProviderforSQLServ......