我正在尝试创建视图,但从此视图中选择语句需要超过15秒。如何使其更快。我对该视图的查询如下。创建视图,SQL查询性能
create view Summary as
select distinct A.Process_date,A.SN,A.New,A.Processing,
COUNT(case when B.type='Sold' and A.status='Processing' then 1 end) as Sold,
COUNT(case when B.type='Repaired' and A.status='Processing' then 1 end) as Repaired,
COUNT(case when B.type='Returned' and A.status='Processing' then 1 end) as Returned
from
(select distinct M.Process_date,M.SN,max(P.enter_date) as enter_date,M.status,
COUNT(case when M.status='New' then 1 end) as New,
COUNT(case when M.status='Processing' and P.cn is null then 1 end) as Processing
from DB1.dbo.Item_details M
left outer join DB2.dbo.track_data P on M.SN=P.SN
group by M.Process_date,M.SN,M.status) A
left outer join DB2.dbo.track_data B on A.SN=B.SN
where A.enter_date=B.enter_date or A.enter_date is null
group by A.Process_date,A.New,A.Processing,A.SN
这view..my选择查询后
select distinct process_date,sum(New),sum(Processing),sum(sold),sum(repaired),sum(returned) from Summary where month(process_date)=03 and year(process_date)=2011
请建议我什么改变来进行的查询执行得更快。
谢谢 ARB
重复使用'select distinct ...'是第一个迹象表明一切都不好 - 如果你得到重复的行,为什么?以合理的方式消除重复,而不是像“select distinct ...”那样使用创可贴是首先要解决的问题。 –
'Distinct'不是为你做任何事情,'组by'已经使结果不同。可能不会加速任何东西,因为查询优化器会知道,不同的是多余的,但没有额外的关键字视图定义会更清晰。 –