SQL选择性快速删除大量数据千万亿级方法
2023-09-11 14:15:13 时间
--SQL选择性分批删除大量数据千万亿级
DECLARE @OneCount int
set @OneCount=100000 --每批删除的记录数10W
print Convert(varchar(50),getdate(),120)
while 1=1
begin
Delete Top(@OneCount) from TankMonitor where TnkM_GenTime<'2021-06-07 0:0:01';
if (@@RowCount<@OneCount) Break;
print Convert(varchar(50),getdate(),120)
WaitFor DELAY '00:00:02' --等待几秒再继续
end
print '删除完成'
--说明 :@OneCount 每次删除的数据量,此处设置10w,可根据实际情况调整。
--SQL Server中@@RowCount返回受上一语句影响的行数
--优化说明:尽量让删除语句使用索引,前提是where子句中用索引列做筛选
--执行前:先删除或禁用表中无关索引(即对当前DELETE语句无用的索引),删除前先生成对应的重建SQL,以便完成数据删除后,重新创建索引
实测:
索引多了,在对大表IO的时候严重影响性能啊,最开始用原表的4个索引,我分批删除了42分钟才删除690万条,然后我取消操作。清除掉表中全部索引,单独建了 一个where 用到的聚集性索引。删除速度提高了至少10倍。11分钟即删除掉了4900万条
相关文章
- SQL中关于日期的常用方法
- linq to sql 扩展方法
- sql server 2012远程链接的方法及步骤
- MS SQL 数据库状态为SUSPECT的处理方法
- Excel数据生成Sql语句的方法
- sql中把字符串转化为数字的方法
- java.sql.SQLException: The SQL statement must not be null or empty.这个错误
- Python简单遍历字典及删除元素的方法
- 利用SQL查询扶贫对象医保报销比率的审计方法
- jQuery跨域请求,跨域Post提交数据的方法(.net/SQL技术交流群206656202 入群需注明博客园) - 思...
- MySQL(Navicat)运行.sql文件时报错:[Err] 2006 - MySQL server has gone away 的解决方法
- 【学习总结】SQL的学习-1-初识数据库与sql
- 监视EF生成SQL的方法(log , SqlServerProfile)
- SQL SERVER中Case的使用方法
- C# String 前面不足位数补零的方法
- Atitit io读取文件法 目录 1. 文件法1 1.1. 异步读取文件:1 1.2. 2.同步读取方法1 1.3. 二进制读文件:1 2. 读取api规范1 3. Atitit 按照
- Android修行手册 - 布局优化方法之一ViewStub
- Database之SQL:自定义创建数据库的各种表demo集合(以方便理解和分析sql的各种增删改查语法的具体用法)
- Python的IDE之PyCharm:PyCharm的简介、安装、入门、使用方法之详细攻略
- Py之face_alignment:face_alignment库的简介、安装、使用方法之详细攻略
- SQL基础【十八、事物】(sql事物慎用,还是写业务逻辑代码好一些,入伙涉及到更换数据啥的很麻烦!)
- 【超全详细】SQL 优化方法
- Android 自定义View常用的方法简单介绍
- shell动态生成.sql文件的方法
- sql 精读(五) 标准 SQL窗口函数一
- Android中View绘制流程以及invalidate()等相关方法分析
- SQL Server 中关于EXCEPT和INTERSECT的使用方法
- Pytest测试框架基本使用方法详解
- HTTP 请求方法 GET/POST/PUT/DELETE