我创建了一个日历表(带有索引),该表具有日期,星期几,会计年度,日期名称等。我的日历表的范围介于2005年-2071年之间。我查询日历表。
我想使用日历表上的日期列来过滤2个不同表上的2个不同日期列。
我遇到的问题是,当使用日历表中的日期列(例如2010-2019)搜索较大的日期范围时,要花很长时间才能返回结果。而如果我在每个表上查询相同的日期范围,则结果以秒为单位返回。这是我正在使用的查询:
Select
a.Col1,
a.Col2,
a.Col3,
a.Date1,
b.Date1
From
TableA as A
FULL JOIN TableB as B
on A.Col1 = B.Col1
INNER JOIN TableCal as C
on A.Date1 = C.Date1
or B.Date1 = C.Date1
WHERE
C.date1 between '2010' and '2019'
如果有更好的方式编写此内容,或者如果我以错误的方式进行操作,那么我欢迎所有建议!谢谢!
答案 0 :(得分:0)
形式上,答案是使用等分连接,如下所示:
Select a.Col1, a.Col2, a.Col3
From (a join
cal ca
on a.col2 = ca.col2
) full join
(b join
cal cb
on b.col2 = cb.col2
)
on a.col1 = b.col1
where ca.date between '2010' and '2019' or
cb.date between '2010' and '2019' ;