哪些SQL查询会有更好的性能?

时间:2011-08-22 03:52:45

标签: sql performance

请查看我的示例查询(如下所示),并让我知道哪个查询的效果会更好以及原因。

方法1:

select team_id,grp_name,grp_desc from
(
select distinct team_id,grp_name,grp_desc from team_table tt where .....
UNION
select team_id,grp_name,grp_desc from sec_team_table stt where ....
UNION
select team_id,grp_name,grp_desc from ter_team_table ttt where...
)

方法2:

select distinct team_id,grp_name,grp_desc from team_table tt where .....
UNION
select team_id,grp_name,grp_desc from sec_team_table stt where ....
UNION
select team_id,grp_name,grp_desc from ter_team_table ttt where...

由于

1 个答案:

答案 0 :(得分:4)

在大多数情况下,它们是等效的,因为外部查询中没有转换 - 优化器将以静默方式处理它。

我建议您确保确实需要使用UNION而不是UNION ALL。

事实上,将UNION和UNION的第一部分中使用的DISTINCT结合起来是多余的,因为UNION将确保从最终集中删除重复项(在UNION的子部分和部分部分之间) UNION)。