选择distinct *查询的成本有多高

时间:2014-03-04 05:35:38

标签: sql sql-server performance tsql sql-server-2012

在sql server 2012中,我有一个包含超过2500万行重复项的表。该表没有唯一索引。它只有一个非聚集索引。我想消除重复,所以,我想到下面的

select distinct * into #temp_table from primary_table
truncate primary_table
select * into primary_table from #temp_table

我想知道选择distinct *查询有多贵。如果我上面的程序非常昂贵,我想知道是否还有其他方法。

1 个答案:

答案 0 :(得分:4)

我不知道它有多贵,但另一种方法是使用主键创建另一个表,在那里插入所有数据并静默拒绝重复项,如此处所述

http://web.archive.org/web/20180404165346/http://sqlblog.com:80/blogs/paul_white/archive/2013/02/01/a-creative-use-of-ignore-dup-key.aspx

基本上,使用IGNORE_DUP_KEY