由于上周末小写把数据数据重复写入数据库,没办法,得去重!

最新使用的语句:

use data

set nocount on
delete DoRecordProperty from
(

select TID,SN,COUNT(0) as num,Max(id) as maxid from DoRecordProperty with (nolock) group by TID,SN having count(0)>1

) p where p.TID=DoRecordProperty.TID and p.SN=DoRecordProperty.SN and DoRecordProperty.Id<>p.maxid

set nocount off

语句执行了5分钟,还没有出结果,再执行下去,估计也没有结果。

如果单独执行

select TID,SN,COUNT(0) as num,Max(id) as maxid from DoRecordProperty with (nolock) group by TID,SN having count(0)>1

9秒钟就查询出来结果了。

于是想是否把重复的数据放在临时表里,然后再删除,效果会如何呢?

于是有了下面的语句

use data
go

set nocount on

create table #Tmp --创建临时表#Tmp
(
    TID int ,
    SN varchar(50),
    maxid int ,
    num int
);

insert into #Tmp(TID,SN,num,maxid)
select TID,SN,COUNT(0) as num,Max(id) as maxid from DoRecordProperty with (nolock) group by TID,SN having count(0)>1

delete DoRecordProperty from
#Tmp p where p.TID=DoRecordProperty.TID and p.SN=DoRecordProperty.SN and DoRecordProperty.Id<>p.maxid

Select COUNT(0) as num from #Tmp --查询临时表的数据
truncate table #Tmp --清空临时表的所有数据和约束
drop table #Tmp
set nocount off

果然,在40秒的时候,执行成功了。

以上是在服务器:CPU 2u E5-2620  ;内存 96G 硬盘是1T 企业级 7200转;数据是sql server 2008上进行操作的。

msqlserver 千万级别单表数据去掉重复记录使用临时表的更多相关文章

  1. MySQL单表数据查询(DQL)

    数据准备工作: CREATE TABLE student( sid INT PRIMARY KEY AUTO_INCREMENT, sname ), age TINYINT, city ), scor ...

  2. MySQL单表数据不超过500万:是经验数值,还是黄金铁律?

    今天,探讨一个有趣的话题:MySQL 单表数据达到多少时才需要考虑分库分表?有人说 2000 万行,也有人说 500 万行.那么,你觉得这个数值多少才合适呢? 曾经在中国互联网技术圈广为流传着这么一个 ...

  3. Innodb单表数据物理恢复

    本文将介绍使用物理备份恢复Innodb单表数据的方法 前言: 随着innodb的普及,innobackup也成为了主流备份方式.物理备份对于新建slave,全库恢复的需求都能从容应对. 但当面临单表数 ...

  4. MySQL单表数据不要超过500万行:是经验数值,还是黄金铁律?

    本文阅读时间大约3分钟. 梁桂钊 | 作者 今天,探讨一个有趣的话题:MySQL 单表数据达到多少时才需要考虑分库分表?有人说 2000 万行,也有人说 500 万行.那么,你觉得这个数值多少才合适呢 ...

  5. MO拆分计划行程序中写入PRODUCTIONORDERS表数据出现重复导致报错(BUG)20180502

    错误提示:ORA-00001: 违反唯一约束条件 (ABPPMGR.C0248833319_6192)ORA-06512: 在 "STG.FP_MO_SPLIT", line 19 ...

  6. SQLServer导出导出单表数据

    1.SQLServer导出单表数据为TXT文件 数据库--任务--导出数据

  7. 单表数据加载到TreeView(.Node.Level>=2) "蝴蝶效应" SelectedNode注意事项 效能优化 综合问题

    using System; using System.Collections.Generic; using System.ComponentModel; using System.Configurat ...

  8. oracle去掉重复记录语句

    oracle去掉重复记录语句   比如现在有一人员表 (表名:peosons) 若想将姓名.身份证号.住址这三个字段完全相同的记录查询出来 select p1.*   from persons  p1 ...

  9. 伪列:Oracle显示查询结果前几条记录用rownum<=。去掉重复记录,保留最早录入记录:取出最小ROWID

    显示6-10行记录: 去掉重复记录,保留最早录入记录:取出最小ROWID SELECT deptno,dname,loc,min(ROWID) FROM dept GROUP BY deptno,dn ...

随机推荐

  1. Struts2学习笔记(拦截器配置添加)

    一.拦截器工作原理: 根据Struts2的工作原理图,拦截器在action执行前进行顺序调用,之后执行Action并返回结果字符串,再逆序调用拦截器.(结构类似递归方式...)大部分时候,拦截器方法都 ...

  2. Redis和Memcache的区别

    Redis和Memcache的区别 总结一: 1.数据类型 redis数据类型丰富,支持set liset等类型 memcache支持简单数据类型,需要客户端自己处理复杂对象 2.持久性 redis支 ...

  3. Angularjs directive

    .directive('mydir',function(){ return{ multiElement: true/false, priority: number, //default: 0 term ...

  4. UIPickerView控件中自定义展示的字体大小及样式

    - (UIView *)pickerView:(UIPickerView *)pickerView viewForRow:(NSInteger)row forComponent:(NSInteger) ...

  5. ns115 step by step

    一,安装环境: sudo apt-get install git-core gnupg flex bison gperf build-essential zip curl zlib1g-dev lib ...

  6. 转载list

    Linux系统下安装rz/sz命令及使用说明 http://blog.csdn.net/kobejayandy/article/details/13291655

  7. Linux运维入门到高级全套常用要点

    Linux运维入门到高级全套常用要点 目 录 1. Linux 入门篇................................................................. ...

  8. php中判断字符串是否全是中文或含有中文的实现代码

    <?php header('Content-type:text/html; charset=utf-8'); $str = '你好'; if(preg_match('/^[\x{4e00}-\x ...

  9. ClownFish:比手写代码还快的通用数据访问层

    http://www.cnblogs.com/fish-li/archive/2012/07/17/ClownFish.html 阅读目录 开始 ClownFish是什么? 比手写代码还快的执行速度 ...

  10. Python isinstance() type()

    isinstance(object, classinfo) 判断实例是否是这个类或者object是变量 classinfo 是类型(tuple,dict,int,float,long...)(包括自定 ...