哪个查询有更好的性能?

问题描述 投票:5回答:1
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) 

我的问题:

  1. 第一个查询是否需要将BigMillionTable中的所有行放在主内存中以执行UNION ALL
  2. 哪个查询提供更好的性能?
sql oracle oracle11g query-performance
1个回答
1
投票

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

在第一个查询中,内部查询将首先运行,它将在整个表上执行union all,然后在选择记录之前执行where。

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

© www.soinside.com 2019 - 2024. All rights reserved.