Присоединение к календарю - PullRequest
0 голосов
/ 21 марта 2019

Я создал таблицу календаря (с индексами), в которой есть даты, день недели, финансовый год, название дня и т. Д. Диапазон в моей таблице календаря находится между 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'

Если есть лучший способ написать это или я поступаю неправильно, я открыт для любых советов / предложений! Спасибо!

1 Ответ

0 голосов
/ 21 марта 2019

Формально, ответ заключается в использовании эквиджоинов, например:

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' ;
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...