从2个不同的int列表中获取不同的int列表

时间:2015-10-19 14:08:23

标签: sql sql-server

我有两个单独的查询,它们只是基本选择,都返回一个不同的整数列。然后我需要将这两个整数列表组合在一起,以生成最终的单个不同的整数列表。

有没有比以下更快的方法呢?

SELECT DISTINCT ID
FROM dbo.Test

UNION

SELECT DISTINCT ID
FROM dbo.Test2

2 个答案:

答案 0 :(得分:4)

如果您在每个表格中没有重复项,那么以下内容可能会更快:

UNION ALL

为此,您需要select id from dbo.test union all select id from dbo.test1 t1 where not exists (select 1 from dbo.test t where t.id = t1.id); 上的索引。

即使有重复项,以下内容也可能更快:

test(id)

这需要select distinct id from dbo.test union all select distinct id from dbo.test1 t1 where not exists (select 1 from dbo.test t where t.id = t1.id); test(id)的索引。我们的想法是扫描索引以返回id。

答案 1 :(得分:1)

我认为在您的情况下,最快的方法是删除两个panginate($limit = null, $columns = ['*']),因为find($id)无论如何都将删除所有重复项:

DISTINCT

请注意,这两个UNION无论如何都不能保证两个序列的唯一性,这是SELECT ID FROM dbo.Test UNION SELECT ID FROM dbo.Test2 的作用。如果您不需要/想要使用DISTINCT

,则需要使用UNION