哪个查询有更好的性能?

Which query has a better performance?

SELECT *
FROM { SELECT * FROM BigMillionTable UNION ALL SELECT * FROM SmallTensTable } 
WHERE (some_condition)

SELECT * 
FROM BigMillionTable 
WHERE (some_condition)

UNION ALL

SELECT * 
FROM SmallTensTable
WHERE (some_condition) 

我的问题:

  1. 第一个查询是否需要将所有行放在 BigMillionTable在主存中执行UNION ALL?
  2. 哪个查询提供更好的性能?

where 条件实际上在 select 之前执行,因此在第二个查询中,您只是在较小的集合上进行联合,因此应该更快。

在第一个查询中,内部查询将首先运行,这将对整体进行联合table,然后在select之前执行where记录。

所以是的,与第一个相比,第二个会提供更好的性能