由于上周末小写把数据数据重复写入数据库,没办法,得去重!
最新使用的语句:
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 千万级别单表数据去掉重复记录使用临时表的更多相关文章
-
MySQL单表数据查询(DQL)
数据准备工作: CREATE TABLE student( sid INT PRIMARY KEY AUTO_INCREMENT, sname ), age TINYINT, city ), scor ...
-
MySQL单表数据不超过500万:是经验数值,还是黄金铁律?
今天,探讨一个有趣的话题:MySQL 单表数据达到多少时才需要考虑分库分表?有人说 2000 万行,也有人说 500 万行.那么,你觉得这个数值多少才合适呢? 曾经在中国互联网技术圈广为流传着这么一个 ...
-
Innodb单表数据物理恢复
本文将介绍使用物理备份恢复Innodb单表数据的方法 前言: 随着innodb的普及,innobackup也成为了主流备份方式.物理备份对于新建slave,全库恢复的需求都能从容应对. 但当面临单表数 ...
-
MySQL单表数据不要超过500万行:是经验数值,还是黄金铁律?
本文阅读时间大约3分钟. 梁桂钊 | 作者 今天,探讨一个有趣的话题:MySQL 单表数据达到多少时才需要考虑分库分表?有人说 2000 万行,也有人说 500 万行.那么,你觉得这个数值多少才合适呢 ...
-
MO拆分计划行程序中写入PRODUCTIONORDERS表数据出现重复导致报错(BUG)20180502
错误提示:ORA-00001: 违反唯一约束条件 (ABPPMGR.C0248833319_6192)ORA-06512: 在 "STG.FP_MO_SPLIT", line 19 ...
-
SQLServer导出导出单表数据
1.SQLServer导出单表数据为TXT文件 数据库--任务--导出数据
-
单表数据加载到TreeView(.Node.Level>;=2) ";蝴蝶效应"; SelectedNode注意事项 效能优化 综合问题
using System; using System.Collections.Generic; using System.ComponentModel; using System.Configurat ...
-
oracle去掉重复记录语句
oracle去掉重复记录语句 比如现在有一人员表 (表名:peosons) 若想将姓名.身份证号.住址这三个字段完全相同的记录查询出来 select p1.* from persons p1 ...
-
伪列:Oracle显示查询结果前几条记录用rownum<;=。去掉重复记录,保留最早录入记录:取出最小ROWID
显示6-10行记录: 去掉重复记录,保留最早录入记录:取出最小ROWID SELECT deptno,dname,loc,min(ROWID) FROM dept GROUP BY deptno,dn ...
随机推荐
-
The 2015 China Collegiate Programming Contest E. Ba Gua Zhen hdu 5544
Ba Gua Zhen Time Limit: 6000/4000 MS (Java/Others) Memory Limit: 65535/65535 K (Java/Others)Total ...
-
基于LR的数据库性能测试
web services协议 在LR的web services协议中提供了如下函数进行数据库的连接和执行sql语句,以实现对数据库的性能测试,也可以实现向数据库中自动生成批量数据. lr_db_dis ...
-
js中的条件语句
//js中的条件语句 ; //example1 单分支语句 ){ console.log("你已经不年轻了!"); }else{ console.log("你依然很有活力 ...
-
VS2005 工程在win7下使用管理员权限运行
想关资料 http://*.com/questions/13030492/set-administrator-privilege-for-my-c-application-in ...
-
Visual Studio2010 安装msdn
1.注册VS2010 断网(不要冒险)->运行Microsoft Visual Studio 2010->帮助->注册产品->YCFHQ-9DWCY-DKV88-T2TMH-G ...
-
在php中使用jquery uploadify进行多图片上传
jquery uploadify是一款Ajax风格的批量图片上传插件,在PHP中使用jquery uploadify很方便,请按照本文介绍的方法和步骤,为你的PHP程序增加jquery uploadi ...
-
linux 完全关闭tomcat
由于直接调用tomcat的 shutdown.sh 有时无法完全关闭掉tomcat,使用 ps -ef | grep tomcat 查找发现tomcat依然还存在,并未完全关掉.在 catalina. ...
-
linux 小笔记
//强杀pid2306的进程 kill -9 2306 //查看80端口占用情况 lsof -i :80 //杀死mysql的所有进程 sudo killall mysqld //关闭占用80端口的所 ...
-
mvc未登录跳转到登录界面
编写一个mvc控制器基类BaseController , 其继承自controller 重写其OnActionExecuting方法, 在其中检测session值,如果没有,则跳转至登录页面. 如下
-
mybatisz中一个可以替代between..and 的技巧
用mybatis进行时间段筛选时,如果,查询本日,本月的信息量,我们可以使用like concat()函数来替换between..and <select id="queryMyStaf ...