求救!存储过程运行很慢,请帮忙优化一下
select count(a.id) from table_a pb left join table_b a on pb.id=a.id left join table_c b on a.id=b.id
left join table_c c on b.Hid=c.Hid where a.field='ps' and a.time_ =
(select max(time_) from a where id = a.id and time_ < @endTime)
and pb.cTime>=@sTime and pb.cTime<@eTime and a.nv = @nv and c.tid=@tid
这段存储过程在数据库中运行很快,可在页面中运行很慢,请教如何优化使页面块些 --------------------编程问答-------------------- 不可能有这种事的。 --------------------编程问答-------------------- 可能是你的页面取回数据后进行处理导致慢的吧 --------------------编程问答-------------------- 我也不明白是怎么回事,可页面运行起来是很慢的,因为我要循环n次取数据,按理说也不应该很慢,但不知道为什么确实很慢 --------------------编程问答-------------------- 帮忙顶先! --------------------编程问答-------------------- 兄弟不了解你的表格。看一看能不能改成子查询。
--------------------编程问答-------------------- 用SQLSERVER性能分析器看一下,在数据库中执行的时间及所用的资源,应该是页面程序的问题。 --------------------编程问答-------------------- 数据库执行的时间大概是90左右,应该是比较快的,但放到页面中不知为何会很慢,郁闷!! --------------------编程问答-------------------- 听别人说。子查询的速度。比联接的速度要快。改成子查询。 --------------------编程问答-------------------- 我很热心啦。贴主,没有选择,必须给我十分鼓励一下我的热度。要不会冰滴。现在可立秋啦。 --------------------编程问答--------------------
请贴程序代码 --------------------编程问答-------------------- 应该是你程序处理问题 --------------------编程问答-------------------- (select max(time_) from a where id = a.id and time_ < @endTime)
红色部分是不是有问题啊,去掉看看 --------------------编程问答--------------------
红色是没有问题的
我的代码就是循环很多次,根据参数不同查出结果组装成dataset,没有什么复杂的
别的存储过程没有问题,唯独这个有问题,不明白为什么 --------------------编程问答-------------------- 在数据库中调用存储过程执行,在SQL Server Profiler中看一下所需的时间、资源;
在程序中调用存储过程执行,在SQL Server Profiler中看一下所需的时间、资源;
如果这两个的差不多,表明是你的程序或SQLSERVER配置的问题。(这个可能性比较大一些)
单独建一个工程,仅执行这个操作试试,速度如何?
如果相对于现在的程序来说,速度要快,表明是你现在程序的业务逻辑的问题(太复杂或是逻辑处理太慢等),只好自己优化;
如果速度差不多,看来应该是连接数据库方面的问题了,检查一下数据库操作是否规范,资源是否有及时释放等 --------------------编程问答-------------------- 同意14楼的观点,看看是不是你在程序中执行了其它一些额外的操作,还有是不是频繁在打开数据库 --------------------编程问答-------------------- 在看看程序其它地方有没有连带上!
补充:.NET技术 , ASP.NET