SELECT *
FROM { SELECT * FROM BigMillionTable UNION ALL SELECT * FROM SmallTensTable }
WHERE (some_condition)
VS
SELECT *
FROM BigMillionTable
WHERE (some_condition)
UNION ALL
SELECT *
FROM SmallTensTable
WHERE (some_condition)
我的问题:
BigMillionTable
中的所有行放在主内存中以执行UNION ALL
?where条件实际上是在select之前执行的,所以在第二个查询中你只是在一个较小的集合上进行联合,所以这应该更快。
在第一个查询中,内部查询将首先运行,它将在整个表上执行union all,然后在选择记录之前执行where。
所以是的,与第一个相比,第二个会提供更好的性能