- 爱易网页
-
ASP.NET教程
- sql查询中添加了top后执行的速度慢解决方法
日期:2014-05-17 浏览次数:20569 次
sql查询中添加了top后执行的速度慢
--发病时间病例数统计
select aTime, max(case Cases_Sex when 1 then aCount else 0 end) as 男
,max(case Cases_Sex when 0 then aCount else 0 end) as 女
,
max(case job when '23009001' then bCount else 0 end),max(case job when '23009002' then bCount else 0 end),max(case job when '23009003' then bCount else 0 end),max(case job when '23009004' then bCount else 0 end),max(case job when '23009007' then bCount else 0 end),max(case job when '23009006' then bCount else 0 end),max(case job when '23009008' then bCount else 0 end),max(case job when '23009009' then bCount else 0 end),max(case job when '23009010' then bCount else 0 end),max(case job when '23009011' then bCount else 0 end),max(case job when '23009012' then bCount else 0 end),c.allcount
from (select aTime as ctime ,sum(aCount) as allcount from
(
select CONVERT(varchar(7),Cases_SickTime,120) as aTime , Cases_Sex ,count(*) as aCount
from VW_Sta_Case_Info_CaseStatistics where 1=1 and Unit_Province=15 group by CONVERT(varchar(7),Cases_SickTime,120), Cases_Sex
) as a
group by aTime )as c inner join
(
select CONVERT(varchar(7),Cases_SickTime,120) as aTime , Cases_Sex ,count(*) as aCount
from VW_Sta_Case_Info_CaseStatistics where 1=1 and Unit_Province=15 group by CONVERT(varchar(7),Cases_SickTime,120), Cases_Sex
) as d
on aTime=cTime left join
(
select CONVERT(varchar(7),Cases_SickTime,120) as bTime , Cases_Occupation as job ,count(*) as bCount
from VW_Sta_Case_Info_CaseStatistics where 1=1 and Unit_Province=15 group by CONVERT(varchar(7),Cases_SickTime,120), Cases_Occupation
) as b
on aTime=bTime
where 1=1
group by aTime,allcount
数据大概十几万条,执行时间1秒,
添加上top 10 后执行时间40秒
怎么修改
------解决方案--------------------
这个和top无关吧,看你关联这么复杂,想快都难呀