加入收藏 | 设为首页 | 会员中心 | 我要投稿 湖南网 (https://www.hunanwang.cn/)- 科技、建站、经验、云计算、5G、大数据,站长网!
当前位置: 首页 > 编程 > 正文

sql-server – 从大数据齐集删除一再项(gt; 100Mio行)

发布时间:2021-03-22 23:23:40 所属栏目:编程 来源:网络整理
导读:我知道这个主题在此之前呈现了许多次,可是没有一个提议的办理方案合用于我的数据集,由于我的条记本电脑因为内存题目或完全存储而遏制计较. 我的表看起来如下,并有108 Mio行: Col1 |Col2 | Col3 |Col4 |SICComb | NameComb Case New |3523 | Alexander |6799

我知道这个主题在此之前呈现了许多次,可是没有一个提议的办理方案合用于我的数据集,由于我的条记本电脑因为内存题目或完全存储而遏制计较.

我的表看起来如下,并有108 Mio行:

Col1       |Col2   |  Col3           |Col4   |SICComb |  NameComb 

Case New   |3523   |  Alexander      |6799   |67993523| AlexanderCase New 
Case New   |3523   |  Undisclosed    |6799   |67993523| Case NewUndisclosed 
Undisclosed|6799   |  Case New       |3523   |67993523| Case NewUndisclosed 
Case New   |3523   |  Undisclosed    |6799   |67993523| Case NewUndisclosed 
SmartCard  |3674   |  NEC            |7373   |73733674| NECSmartCard 
SmartCard  |3674   |  Virtual NetComm|7373   |73733674| SmartCardVirtual NetComm 
SmartCard  |3674   |  NEC            |7373   |73733674| NECSmartCard

独一列是SICComb和NameComb.我实行添加一个主键:

ALTER TABLE dbo.test ADD ID INT IDENTITY(1,1)

但整数只是在新的分钟内填满了高出30 GB的存储空间.

哪个是从表中删除一再项的最快最有用的要领?

办理要领

凡是,从表中删除一再项的最将近领是将记录(无一再项)插入姑且表,截断原始表并将其从头插入.

以下是行使SQL Server语法的设法:

select distinct t.*
into #temptable
from t;

truncate table t;

insert into t
    select tt.*
    from #temptable;

虽然,这在很洪流平上取决于第一步的速率.并且,您必要有空间来存储统一个表的两个副本.

请留意,建设姑且表的语法因数据库而异.有些人行使create table的语法而不是select into.

编辑:

您的身份插入错误很贫困.我以为您必要从distinct列的列表中删除标识.可能做:

select min(<identity col>),<all other columns>
from t
group by <all other columns>

假如您有一个标识列,则没有一再项(按照界说).

最后,您必要确定行所需的ID.假如您可觉得行天生新的id,那么只需将标识列从插入列列表中删除:

insert into t(<all other columns>)
    select <all other columns>;

假如您必要旧的标识值(而且最小值可以),请封锁标识插入并执行:

insert into t(<all columns including identity>)
    select <all columns including identity>;

(编辑:湖南网)

【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容!

    热点阅读