在SQL 2008中,我有这样的查询:
QUERY A UNION QUERY B UNION QUERY C
它会比将所有3个查询的结果放入一个临时表然后再用SELECT它们查询来慢/快DISTINCT吗?
SELECT
DISTINCT
它取决于查询-在不知道查询A,B或C的复杂性的情况下,这不是可以回答的,因此,最好的选择是分析然后基于此进行判断。
但是… 无论如何,我可能都会使用一个联合:临时表可能会非常昂贵,尤其是当它变大时。请记住,使用临时表时,您正在显式创建额外的操作,因此需要进行更多的I / O操作以使磁盘子系统处于压力状态。如果您可以在不使用临时表的情况下进行选择,那么它总是(可能)会更快。
此规则一定会有一个例外(或七个),因此最好对实际的大型数据集进行剖析,以确保获得一些可靠的数据来做出适当的决策。