点晴MIS内部交流论坛 加入收藏
新手上路
论坛搜索
 您的位置:点晴MIS系统问题答疑『 经验分享&问题答疑 』浏览当前帖子  
登 陆注 册论坛帮助  

  网站搜索
  搜索范围: 搜索方式: 关键词(可用空格分开)  

  作者及文章信息: 本文热度:403 % 
admin

积分:74803
等级:网站管理员
文数:13698
注册:2004-7-20

 信息   留言   主页   编辑   引用    

楼 顶 

 SQL Server之delete top删除超大海量数据报错解决方案


以下示例删除 Testdb 表中所有行的 10%:

sql server 2005下奇怪的delete Top 语句--删除测试数据
    --以下示例删除 Testdb 表中所有行的 10%。
sql server 2005下奇怪的delete Top 语句delete TOP (10PERCENT from Testdelete
sql server 2005下奇怪的delete Top 语句
GO
sql server 2005下奇怪的delete Top 语句
--下面这句执行错误
sql server 2005下奇怪的delete Top 语句--
--delete TOP (10) PERCENT from Testdelete order by PKID desc 
sql server 2005下奇怪的delete Top 语句--
--GOsql server 2005下奇怪的delete Top 语句

当遇到超大数据时(百万、千万以上),可能会发现delete失去响应,无法删除任何数据,可以用以下方法轻松对超大海量数据进行制定删除:
delete from mis_action_log where id in (select top 100000 id from mis_action_log where input_time<'2022-1-1' order by id asc)

如果不需要排序,那么以下方法也是可以的:
delete top (10000) from mis_action_log where input_time<'2022-1-1'
此方法为SQL Server 2005以上版本才支持,而且不支持后面带排序效果,并且要删除的数量10000前后都必须有括号。

该文章在 2022/7/22 18:26:19 编辑过

  离 线  2022/7/22 18:14:55 
  本文章共有 0 页, 0 张回文,每页有 10 张回文 >> [ ]
页码:  
Copyright 2003-2024 ClickSun All Rights Reserved