这两天遇到一个问题令人比较郁闷,一个大概120行左右的存储过程在SQL Server2012的查询分析器里面执行,
速度非常理想,1秒不到,即可筛选抓取到大概500条数据记录。
但在C#程序代码里调用,就提示连接超时。把CommandTimeout设置为300,就要3分钟左右时间才能显示出来,
检查了几遍代码也没有发现错误。问题依旧。

原因分析:
1、由于在查询分析器里执行速度很快,并且数据量也不多。
2、只在程序里调用才有缓慢的情况。
3、设置CommandTimeout参数,就可以显示结果出来,但要很久。

综上分析,初步断定问题出在C#代码上。但检查后没有收获。

在百度上查询这方面的资料。
在CSDN论坛上终于找到类似的资料贴子。其中有一网友在回复中说“有可能是执行计划过期吧”,
真是一言惊醒梦中的我。

立即在查询分析器上执行:

exec sp_recompile @objname='存储过程名称'

再次测试程序,这次终于成功了。速度很满意。

原因分析:
由于存储过程是预编译的, 在第一次执行的时候, 会生成执行计划, 以后执行的时候, 会使用这个执行计划(除非存储过程侯或者显示指定重新编译), 而不是每次执行时都去生成执行计划。
当存储过程涉及的对象结构调整, 或者相关的数据产生了很大变化, 这可能导致原来的计划不适合当前的现状(执行计划过期), 这种情况下应该重新编译存储过程。

如果修改一次不行,可以再修改一次,再等会测试

【转】解决存储过程执行快,但C#程序调用执行慢的问题的更多相关文章

  1. Java 执行终端命令实现,调用执行另外一个Java文件

    Test.java package com.journaldev.files; public class Test { public static void main(String[] args) { ...

  2. 当程序调用dll时获取dll路径,DLL中获取自身的句柄

    当程序调用dll时,获取dll路径的方法: HMODULE hMod = GetModuleHandle(_T("axload.dll")); if (hMod != NULL) ...

  3. rpyc + plumbum 实现远程调用执行shell脚本

    rpyc可以很方便实现远程方法调用, 而plumbum则可以实现在python中类似shell的方式编码: 具体实现代码如下: Server.py import rpyc from rpyc.util ...

  4. ajax跨域往php程序post数据时,php程序总是执行两次的解决方法

    php程序是部署在IIS7上面,ajax提交数据时,遇到了两个问题,一个就是跨域,一个php程序总会被执行两次. 第一个问题的解决方法,是百度出来的,添加下面几行代码就可以了: header('Acc ...

  5. Windows 8.1升级至Windows 10后,启动VisualSVN Server Manager报错:提供程序无法执行所尝试的操作 (0x80041024)的解决

    1.1.Windows 8.1升级至Windows 10后,启动VisualSVN Server Manager报错:提供程序无法执行所尝试的操作 (0x80041024),VisualSVN Ser ...

  6. c#Winform程序调用app.config文件配置数据库连接字符串 SQL Server文章目录 浅谈SQL Server中统计对于查询的影响 有关索引的DMV SQL Server中的执行引擎入门 【译】表变量和临时表的比较 对于表列数据类型选择的一点思考 SQL Server复制入门(一)----复制简介 操作系统中的进程与线程

    c#Winform程序调用app.config文件配置数据库连接字符串 你新建winform项目的时候,会有一个app.config的配置文件,写在里面的<connectionStrings n ...

  7. 在SQL Server数据库中执行存储过程很快,在c#中调用很慢的问题

    记录工作中遇到的问题,分享出来: 原博客地址:https://blog.csdn.net/weixin_40782680/article/details/85038281 今天遇到一个比较郁闷的问题, ...

  8. CLR via C# 摘要一:托管程序的执行模型

    托管程序的执行模型大致如下: 编译源代码为程序集(dll或exe文件),程序集包括了记录相关信息的元数据和IL代码 执行程序集文件时,启动CLR,JIT负责把IL编译为本地代码并执行 IL是微软推出的 ...

  9. Asp.Net(C#)自动执行计划任务的程序实例分析

    在业务复杂的应用程序中,有时候会要求一个或者多个任务在一定的时间或者一定的时间间隔内计划进行,比如定时备份或同步数据库,定时发送电子邮件等,我们称之为计划任务.实现计划任务的方法也有很多,可以采用SQ ...

随机推荐

  1. 108. Convert Sorted Array to Binary Search [Python]

    108. Convert Sorted Array to Binary Search Given an array where elements are sorted in ascending ord ...

  2. 两片74门实现的双边沿D触发器

    最近一个项目需要时钟上升沿和下降沿都可以触发的D触发器,但并没有找到符合要求的商品IC.也去看了一些文献,但都是给的示意图然后用分立元件实现的(应该是准备做成IC).这里给出一种最少2个IC就能搭出来 ...

  3. BookStore示例项目---菜单栏UI分析

    部署 参照 ABP示例项目BookStore搭建部署 项目解构 1).动态脚本代理 启动项目时,默认会调用两个接口 /Abp/ApplicationConfigurationScript /Abp/S ...

  4. spring源码阅读笔记06:bean加载之准备创建bean

    上文中我们学习了bean加载的整个过程,我们知道从spring容器中获取单例bean时会先从缓存尝试获取,如果缓存中不存在已经加载的单例bean就需要从头开始bean的创建,而bean的创建过程是非常 ...

  5. Ali_Cloud++:阿里云服务器防火墙相关命令

    systemctl start firewalld ##启动Firewall systemctl stop firewalld ##关闭Firewall systemctl restart firew ...

  6. Mybatis入门三

    一.连接数据库的配置单独放在一个properties文件中 之前,我们是直接将数据库的连接配置信息写在了MyBatis的conf.xml文件中,如下: <?xml version="1 ...

  7. [bzoj2547]玩具兵<Spfa+二分+匈牙利算法>

    题目链接:http://www.lydsy.com/JudgeOnline/problem.php?id=2547 挺有意思的一道题,这道题可以划分成几个小题....... 题目大意: 三个兵种在一个 ...

  8. USACO07MAR Face The Right Way G 差分

    题目链接 https://www.luogu.com.cn/problem/P2882 分析 这个题来看的话好像有点难下手,不如再去读一遍题 N遍,发现一句话很重要Each time the mach ...

  9. js中写laravel模板blade语法和PHP逻辑解决方法

    在js中是否能够执行blade的语法?或者说在js中能否处理PHP逻辑呢? 答案是,当然的 下面来看需求:在提交表单,完成入库操作后,使用 return redirect(route('admin.u ...

  10. C - Monkey and Banana

    文章目录 题意如下 思路如下 题解如下: A group of researchers are designing an experiment to test the IQ of a monkey. ...