哪个查询有更好的性能?
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)
我的问题:
- 第一个查询是否需要将所有行放在
BigMillionTable
在主存中执行UNION ALL
?
- 哪个查询提供更好的性能?
where 条件实际上在 select 之前执行,因此在第二个查询中,您只是在较小的集合上进行联合,因此应该更快。
在第一个查询中,内部查询将首先运行,这将对整体进行联合table,然后在select之前执行where记录。
所以是的,与第一个相比,第二个会提供更好的性能
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)
我的问题:
- 第一个查询是否需要将所有行放在
BigMillionTable
在主存中执行UNION ALL
? - 哪个查询提供更好的性能?
where 条件实际上在 select 之前执行,因此在第二个查询中,您只是在较小的集合上进行联合,因此应该更快。
在第一个查询中,内部查询将首先运行,这将对整体进行联合table,然后在select之前执行where记录。
所以是的,与第一个相比,第二个会提供更好的性能