如果您遇到对两个结果集执行 Union All 的情况,并且每个结果集都是从具有主表的相同过滤子集的内部联接派生的,那么查询引擎是否会“命中”主表一次,或者两次?
例子:
SELECT m.col4, st1.col2
FROM master m
INNER JOIN subTable1 st1
on st1.col1 = m.col1
WHERE m.col1 = 'a' and m.col2 = 123 and m.col3 = "a1b2"
UNION ALL
SELECT m.col4, st2.col2
FROM master m
INNER JOIN subTable2 st2
on st2.col1 = m.col1
WHERE m.col1 = 'a' and m.col2 = 123 and m.col3 = "a1b2"
我正在尝试确定创建一个临时表来保存主表的过滤结果是否有益,因此 UNION ALL 语句将使用主记录的一小部分,而不必执行过滤主表两次,就像上面的例子中可能做的那样。
提前感谢您提供的任何建议。