日期:2014-05-18  浏览次数:21035 次

Ado.net连接数据库执行时间的一个问题?
有一个存取过程 在查询分析器中执行的非常快 1秒左右
但是在程序中运行要40多秒
运行 exec sp_recompile @objname='存储过程的名字' 后速度提高到4秒左右

请问 怎么把速度提到到和 查询分析器一样?
运行环境
iis6+.net2 + mssql2005

PS:
1.程序中通过微软企业库对ado.net进行了一次封装
2.这个存取过程的任务是从几百万条数据中取出最近的几条数据(通过top 1000 构建了一个临时表,来解决搜索范围过大的问题)


------解决方案--------------------
你的SQLSERVER里面开启监视看下运行的SQL语句实际使用了多少时间,再监视下并发连接数。还有一种可能性是资源的死锁造成的。
------解决方案--------------------
LZ最好是把你的存储过程贴出来,大家才好分析里面是否有问题。
------解决方案--------------------
我遇见过这种情况,你看看你的存储过程里面有没有涉及到跨服务器查询的,我当时就是用到了跨服务器查询数据,导致非常的慢,在查询分析器里面1秒钟,但是在程序里面要1分钟,后来找到原因了,尽量不要跨服务器查询。
------解决方案--------------------
你可以进行代码优化应该能提升一些查询速度,但绝对达不到查询分析器中的速度!再说你说的40秒是不是有

点夸张啊,你有多少数据啊,要这么久!
------解决方案--------------------
要是真的是40秒,我估计是你的代码有问题,需要优化一下!