+ -
当前位置:首页 → 问答吧 → 如何优化SQL语句,提高查询速度 急!!

如何优化SQL语句,提高查询速度 急!!

时间:2011-12-22

来源:互联网

ALTER PROCEDURE [dbo].[GetLEDShowData]
as
select rank () over (order by testtime desc) xh,Stationinfo.StationName,Report.Dpress,ZDayDunShuiHaoDian.Consumption1,History.* from History left join Stationinfo on History.StationName=Stationinfo.Agreement left join Report on Report.StationName=History.StationName
left join ZDayDunShuiHaoDian on ZDayDunShuiHaoDian.StationName=History.StationName
where History.ID in(select max(ID) from History group by StationName) and Report.ID in(select max(ID) FROM Report group by StationName) and ZDayDunShuiHaoDian.ID in(select max(ID) from ZDayDunShuiHaoDian group by StationName)
order by Testtime desc
这是我写的SQL存储过程,在SQL 2005中运行好几分钟才能查出数据来。如果要是在C#中调用那就更慢了。如果更改才能提高查询速度呢?急!

作者: xinshixiaoguan   发布时间: 2011-12-22

太长

说明各表数据量,有利于抓住重点

思路:
1、分步,利用临时表保存中间数据
2、语句修改,NOT EXISTS 代替你的MAX子查询

作者: Haiwer   发布时间: 2011-12-22

引用 1 楼 haiwer 的回复:
太长

说明各表数据量,有利于抓住重点

思路:
1、分步,利用临时表保存中间数据
2、语句修改,NOT EXISTS 代替你的MAX子查询

海爷V5

作者: fredrickhu   发布时间: 2011-12-22

你这个包含三个表的全表聚合,如果三个表有一个大的就会很慢。基本无法优化。

作者: kuqideyupian   发布时间: 2011-12-22

引用 3 楼 kuqideyupian 的回复:
你这个包含三个表的全表聚合,如果三个表有一个大的就会很慢。基本无法优化。

鸭子么。。

作者: SQL777   发布时间: 2011-12-22

引用 1 楼 haiwer 的回复:
太长

说明各表数据量,有利于抓住重点

思路:
1、分步,利用临时表保存中间数据
2、语句修改,NOT EXISTS 代替你的MAX子查询

支持海爷。

作者: SQL777   发布时间: 2011-12-22