Sql 工会与工会在绩效上的区别

Sql 工会与工会在绩效上的区别,sql,performance,sql-server-2008,Sql,Performance,Sql Server 2008,在SQL 2008中,我有这样一个查询: QUERY A UNION QUERY B UNION QUERY C 它会比将所有3个查询的结果放入一个临时表中,然后用DISTINCT选择它们慢/快吗?DISTINCT和UNION代表完全不同的任务。第一个将消除,而第二个将连接结果集。我不知道您想做什么,但似乎您希望从3个不同的查询中获得不同的行,并获得关联的结果。在这种情况下: query A UNION query B...... 这将是最快的,当然这取决于你想做什么。这取决于查询-在不

在SQL 2008中,我有这样一个查询:

QUERY A
UNION 
QUERY B
UNION 
QUERY C

它会比将所有3个查询的结果放入一个临时表中,然后用DISTINCT选择它们慢/快吗?

DISTINCT和UNION代表完全不同的任务。第一个将消除,而第二个将连接结果集。我不知道您想做什么,但似乎您希望从3个不同的查询中获得不同的行,并获得关联的结果。在这种情况下:

query A UNION query B......

这将是最快的,当然这取决于你想做什么。

这取决于查询-在不知道查询A、B或C的复杂性的情况下,这不是一个可以回答的问题,因此你最好的选择是分析并根据这一点进行判断

然而。。。 不管怎样,我可能会选择工会:临时桌子可能会很贵,特别是当它变大的时候。请记住,对于临时表,您显式地创建了额外的操作,从而产生了更多的i/o,以使磁盘子系统承受更大的压力。如果您可以在不使用临时表的情况下进行选择,那么速度可能会更快


这条规则肯定会有一个或七个例外,因此您最好针对实际的大型数据集进行分析,以确保获得一些可靠的数据,以便做出适当的决策。

据我所知,UNION会自动在内部执行不同的操作。。UNION ALL不会对结果集应用这种独特性。实际上,UNION既粘贴了两个结果集,又消除了重复的行。然而,UNION ALL只将两个结果集粘贴在一起,不进行任何消除。如此不同的人只做一件事;消除。谢谢你的信息。我以前很少问这个问题。但基本上,联合就像选择不同于。。。联合所有。。。。我会更正我的答案。