当前位置:编程学习 > C#/ASP.NET >>

数据库查询超时的问题,极度郁闷

   我用的是SQLSERVER2005,通过存储过程,记录只有5000条,在数据库查询分析器中只要3秒就出结果了,但是在ASP.NET页面等N久都不出结果,我检测语句,只是一直测试连接,都没有看到传过来的查询存储过程,我设置了TIMEOUT属性,包括web.config和 CommandTimeOut 都设置比较大了,但是出现的结果就是等待,页面到了1半就不动了。这个是什么原因啊?为什么查询的时候连语句也发送不到SQLSERVER中,那个时候都还没有记录集产生,而且我是GROUP BY统计 这查出来的5000条数据。

存储过程的SQL如下
select 车型 ,sum(数量) as 数量 from(
  (select SearchDictionary.厂牌 as 车型,count(*) as 数量 from 
   (select * from Mobile where 发牌日期 between '2003-01-01' and '2008-05-09'
and Mobile.型号 in(select 型号 from TopgradeCar left join SearchDictionary on SearchDictionary.厂牌 =TopgradeCar.CarName)
and 地局号='B'
   )b left join SearchDictionary
   on SearchDictionary.型号=b.型号
   where   SearchDictionary.厂牌<>'' and SearchDictionary.厂牌 is not null
   group by SearchDictionary.厂牌) 
union
(select distinct 厂牌 as 车型,0 as 数量 from TopgradeCar left join SearchDictionary  on SearchDictionary.厂牌 =TopgradeCar.CarName
)) b group by 车型  order by 数量 desc --------------------编程问答-------------------- 能用内联就不用外联.
能不用虚表就不用虚表....
能select colunm就不select all....
还有很多呢....能不用is not就不用is not --------------------编程问答-------------------- 改进SELECT语句 --------------------编程问答-------------------- 还可以设置command 的CommandTimeOut 
比如
SqlCommand cmd;
cmd.CommandTimeout=1200这样子的 --------------------编程问答--------------------  cmd.CommandTimeout = 1000; --------------------编程问答-------------------- 应该不是sql语句的问题
跟踪代码,一直到地层,看抛出什么异常
--------------------编程问答-------------------- 一直等待,如果有异常也是超时异常 --------------------编程问答-------------------- 有装卡巴吗,有时会影响的 --------------------编程问答-------------------- 没有卡巴 --------------------编程问答-------------------- 返回的数据量太大了吧。 --------------------编程问答-------------------- Mobile 表中有500W 条数据,但是查询筛选出来之后就只有5000条了,然后统计,应该还没有到处不了结果的地步,主要是在SQL的查询分析器中,3秒就查处了结果,但是在ASP.NET查,半天都返回不了一个结果,这个就郁闷。这个FILL操作也不是我定义的,是ADO.NET提供的填充记录集的方法,跟到这里就一直等,等死去。。。 --------------------编程问答-------------------- 用数据库的跟踪工具看下,查询在数据库上执行没有,万一没办法就减少数据量测一下,确定问题先 --------------------编程问答-------------------- 5000条数据对应b/s网页来说数据量有点大,楼主试试只查询出前10条看看如何,用top 10 

如果确实是数据量的原因,建议楼主做个分页吧
--------------------编程问答-------------------- 以前做个项目时遇到一个情况也是一直等待,后来调试才发现,某个代码段内本该处一同一事务中运行的语句,并没有加上SqlTransaction对象参数,所以执行到第二个语句时,由于前面的语句处于事务状态,所以第二个语句就一直在等第一个语句的事务结束,不知道LZ是不是这种情况 --------------------编程问答-------------------- 我晕死,今天发现CPU还会100%,是SQLSERVER 的进程,我用的是查询,事务是自动提交的,应该不会存在这样的问题,我查询的记录最后出来的统计结果其实只有8条,.net还有这样的问题,我现在都跟踪不到,我用SQLSERVER监测都监测不到语句,估计这个监测工具是相关的操作执行之后出错或者出现结果的时候才抛送给监测工具显示的,我用ado.net通过存储过程查询和在查询分析器里的查询会有什么本质上的区别,或者中间还有哪些环节,否则同一个存储过程,同一段语句,怎么出结果的时间反差这么大呢。。。依然郁闷,非常郁闷 --------------------编程问答-------------------- 问题好像解决了,我这次在查询分析器以一样的条件运行存储过程而不是存储过程中的语句,之后就莫名其妙的可以了!!!!!!!真是,莫名其妙。。 --------------------编程问答-------------------- --------------------编程问答-------------------- aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa --------------------编程问答-------------------- dddddddddddddd
补充:.NET技术 ,  ASP.NET
CopyRight © 2012 站长网 编程知识问答 www.zzzyk.com All Rights Reserved
部份技术文章来自网络,