Teradata SQL: ИЛИ условия против объединения всех
Насколько я понимаю, большинство условий ИЛИ можно заменить там, где производительность повышается с помощью UNION ALL. Но для этих 2 запросов значение Count ('1') не совпадает. Почему это так - я что-то здесь упускаю. Не должно ли быть так же. Может кто-нибудь объяснить несоответствие
SQL # 1
sel
D1.COL_1_CD, D1.COL_1_DESC,
D2.COL_2_CD, D2.COL_2_DESC, D3.COL_3_CD, D3.COL_3_DESC, D4.COL_4_CD,
D4.COL_4_DESC, D5.COL_5_CD, D5.COL_5_DESC,
d1.COL_1_CD_SYS_ID,
d2.COL_2_CD_SYS_ID,
d3.COL_3_CD_SYS_ID,
d4.COL_4_CD_SYS_ID,
d5.COL_5_CD_SYS_ID
from
D1,
D2, D3, D4,
D5
where
D1.COL_1_CD1=D2.COL_2_CD1
and
D2.COL_2_CD1=D3.COL_3_CD1
and
D4.COL_4_CD1=D5.COL_5_CD1
and
(D1.COL_1_CD in ('707')
or D2.COL_2_CD in ('707')
or D3.COL_3_CD in ('707')
or D4.COL_4_CD in ('707')
or D5.COL_5_CD in ('707') )
group by 1,2,3,4,5,6,7,8,9,10,11,12,13,14,15
SQL # 2
sel
D1.COL_1_CD, D1.COL_1_DESC,
D2.COL_2_CD, D2.COL_2_DESC, D3.COL_3_CD, D3.COL_3_DESC, D4.COL_4_CD,
D4.COL_4_DESC, D5.COL_5_CD, D5.COL_5_DESC,
d1.COL_1_CD_SYS_ID,
d2.COL_2_CD_SYS_ID,
d3.COL_3_CD_SYS_ID,
d4.COL_4_CD_SYS_ID,
d5.COL_5_CD_SYS_ID
from
D1,
D2, D3, D4,
D5
where
D1.COL_1_CD1=D2.COL_2_CD1
and
D2.COL_2_CD1=D3.COL_3_CD1
and
D4.COL_4_CD1=D5.COL_5_CD1
and
D1.COL_1_CD in ('707')
UNION ALL
sel
D1.COL_1_CD, D1.COL_1_DESC,
D2.COL_2_CD, D2.COL_2_DESC, D3.COL_3_CD, D3.COL_3_DESC, D4.COL_4_CD,
D4.COL_4_DESC, D5.COL_5_CD, D5.COL_5_DESC,
d1.COL_1_CD_SYS_ID,
d2.COL_2_CD_SYS_ID,
d3.COL_3_CD_SYS_ID,
d4.COL_4_CD_SYS_ID,
d5.COL_5_CD_SYS_ID
from
D1,
D2, D3, D4,
D5
where
D1.COL_1_CD1=D2.COL_2_CD1
and
D2.COL_2_CD1=D3.COL_3_CD1
and
D4.COL_4_CD1=D5.COL_5_CD1
and
D2.COL_2_CD in ('707')
UNION ALL
.....<same query>
D3.COL_3_CD in ('707')
UNION ALL
.....<same query>
D4.COL_4_CD in ('707')
UNION ALL
.....<same query>
D5.COL_5_CD in ('707')
количество строк не совпадает. Какая логика ИЛИ может быть преобразована как эквивалент UNION ALL.