数据已经过脱敏处理
--原SQL 30min出不来结果
select a.*
from TeableA a
where is_open = '1'
and ecd = 'xshg'
and not exists
(select * from bvaluation b
where a.calendar_date = b.tdate)
and a.calendar_date >= '2011-09-06'
and a.calendar_date < convert( date, getdate())
--表信息查看
select count(1)
from TeableA a
where is_open = '1'
and ecd = 'xshg'
and a.calendar_date >= '2011-09-06'
and a.calendar_date < convert( date, getdate())
--1357
select count(1) from bvaluation b
--8262721
--改写SQL1
select
a.*
from TeableA a left join tdate b on (a.calendar_date = b.tdate)
where
a.is_open = '1' and
a.ecd = 'xshg' and
a.calendar_date >= '2011-09-06' and
a.calendar_date < convert( date,getdate()) and
b.tdate is null
--发现a.calendar_date: b.tdate=1:N ,join后会导致a表的重复,查询反馈很快,但是因为重复result set跑完耗时还是较长。
--sp_helpindex bvaluation
--bvaluation$BPK_AK_Key nonclustered, unique, unique key located on DATA SID, TSYMBOL, tdate, YEART_MAT
--唯一约束中包含tdate
--改写SQL2(Final)
select
a.*
from TeableA a left join (select distinct tdate from bvaluation)
b on (a.calendar_date = b.tdate)
where
a.is_open = '1' and
a.ecd = 'xshg' and
a.calendar_date >= '2011-09-06' and
a.calendar_date < convert( date,getdate()) and
b.tdate is null
--1s之内出结果