如何解决sql server 存储过程在查询分析器快,但程序调用存储过程执行慢的问题?
转载:http://blog.csdn.net/pgbiao/article/details/22388945
------------------------------------------------------------------------------------------------------------------------------------------------------------------------
这两天遇到一个问题令人比较郁闷,一个大概120行左右的存储过程在SQL Server2012的查询分析器里面执行,
速度非常理想,1秒不到,即可筛选抓取到大概500条数据记录。
但在C#程序代码里调用,就提示连接超时。把CommandTimeout设置为300,就要3分钟左右时间才能显示出来,
检查了几遍代码也没有发现错误。问题依旧。
原因分析:
1、由于在查询分析器里执行速度很快,并且数据量也不多。
2、只在程序里调用才有缓慢的情况。
3、设置CommandTimeout参数,就可以显示结果出来,但要很久。
综上分析,初步断定问题出在C#代码上。但检查后没有收获。
在百度上查询这方面的资料。
在CSDN论坛上终于找到类似的资料贴子。其中有一网友在回复中说“有可能是执行计划过期吧”,
真是一言惊醒梦中的我。
立即在查询分析器上执行:
exec sp_recompile @objname='存储过程名称'
exec sp_recompile @objname='存储过程名称'
再次测试程序,这次终于成功了。速度很满意。
原因分析:
由于存储过程是预编译的, 在第一次执行的时候, 会生成执行计划, 以后执行的时候, 会使用这个执行计划(除非存储过程侯或者显示指定重新编译), 而不是每次执行时都去生成执行计划。
当存储过程涉及的对象结构调整, 或者相关的数据产生了很大变化, 这可能导致原来的计划不适合当前的现状(执行计划过期), 这种情况下应该重新编译存储过程。
如果修改一次不行,可以再修改一次,再等会测试
如何解决sql server 存储过程在查询分析器快,但程序调用存储过程执行慢的问题?相关推荐
- SQL SERVER使用ODBC 驱动建立的链接服务器调用存储过程时参数不能为NULL值
我们知道SQL SERVER建立链接服务器(Linked Server)可以选择的驱动程序非常多,最近发现使用ODBC 的 Microsoft OLE DB 驱动程序建立的链接服务器(Linked S ...
- 轻松掌握使用 SQL Server 浏览器,解决SQL Server 2005跨网段不能连接问题
SQL Server Browser 作为 Windows 服务在服务器上运行.SQL Server Browser 侦听对 SQL Server 资源的传入请求,并提供计算机上安装的 SQL Se ...
- sql server死锁_如何解决SQL Server中的死锁
sql server死锁 In this article, we will talk about the deadlocks in SQL Server, and then we will analy ...
- 如何使用SQL Server链接服务器查询Excel数据
Linked servers allow SQL Server access to data from a remote data source. A remote data source can b ...
- sql 闩锁 原因_如何识别和解决SQL Server中的热闩锁
sql 闩锁 原因 描述 (Description) In SQL Server, internal latch architecture protects memory during SQL ope ...
- 解决 SQL Server 中 CPU 使用率过高的问题
本文提供了诊断和修复运行 Microsoft SQL Server 的计算机上 CPU 使用率过高导致的问题的过程. 尽管在 SQL Server 中出现 CPU 使用率过高有许多可能原因,但以下原因 ...
- sql server 2000 版本查询
确定已安装的 SQL Server 2000 Database Components 版本 使用 isql.osql 或查询分析器,对数据库引擎实例 ...
- php多表查询性能优化,MSSQL_SQL Server多表查询优化方案集锦,SQL Server多表查询的优化方案是 - phpStudy...
SQL Server多表查询优化方案集锦 SQL Server多表查询的优化方案是本文我们主要要介绍的内容,本文我们给出了优化方案和具体的优化实例,接下来就让我们一起来了解一下这部分内容. 1.执行路 ...
- 解决SQL Server 导入System.Web.dll程序集,报错问题
本人由于需要做一个小项目,项目的内容是这样的:SQl Server中有个报警信息表(tb_Alarm_info),当这个报警信息表有新的数据插入时,将这个产生的报警信息发送到相关人员手机上: 解决思路 ...
- SQL SERVER跨服务器查询
SQL SERVER跨服务器查询 1.执行存储过程 sp_addlinkedserver 以将服务器添加到 sys.servers. -server124为远程服务器的别名 exec sp_addli ...
最新文章
- 推荐几本Python电子书
- LeetCode Insertion Sort List(单链表插入排序)
- ajax插件库,03.vue-ajax、vue UI 组件库
- python 求连线相似度_Python分析《都挺好》中的人物关系,苏大强与蔡根花是真爱?...
- C# 2018.9.17
- [转].NET下读取PDF文本
- 树莓派3显示服务器SSH拒绝了密码,脚本封杀尝试树莓派SSH密码的来源IP
- 第一二章(PTA复习)
- iris数据_Python数据分析02-Iris-直方图与KDE
- 227 用栈模拟汉诺塔问题
- 易语言mysql 记录集_求一个易语言返回mysqlcha询结果记录集的例子
- finebi如何使用mysql_如何利用bi数据分析FineBI配置MySQL
- 第一部分 知己知彼
- matlab计算连续复利,求连续复利计算公式。。。
- 轻松快速安装Kubernetes dashboard
- Quadro P5200 - 最强大的移动工作站显卡 专门为了惠普 VR Z 背包电脑而发布
- AI语音机器人拿来做什么用?
- sql语句基础-提升
- “双减”下 K12 教育集体折戟,AI 会是教培行业力挽狂澜的稻草吗?
- 夯实基础—java关键字