有一个拥有1亿条数据的表,只需要保留其中的5条,其他删除,如何做?
2012-06-19 11:09
344 查看
这就需要用truncate table来搞定了,如下:
select 5条数据 into #临时表 from 1亿条数据的牛X表
truncate table 1亿条数据的牛X表 --让它牛X,不到10毫秒干掉它。
insert 1亿条数据的牛X表 select * from #临时表
drop table #临时表
truncate和 delete只删除数据不删除表的结构(定义)
; drop语句将删除表的结构被依赖的约束(constrain),触发器(trigger),索引(index); 依赖于该表的存储过程/函数将保留,但是变为invalid状态.
1、TRUNCATE在各种表上无论是大的还是小的都非常快。如果有ROLLBACK命令DELETE将被撤销,而TRUNCATE则不会被撤销。
2、truncate不能进行回滚操作。
3、truncate不触发任何delete触发器。
5、当表被truncate后,这个表和索引所占用的空间会恢复到初始大小,而delete操作不会减少表或索引所占用的空间。
6、不能truncate一个带有外键的表,如果要删除首先要取消外键,然后再删除。
DELETE语句执行删除的过程是每次从表中删除一行,并且同时将该行的的删除操作作为事务记录在日志中保存以便进行进行回滚操作。
TRUNCATE TABLE 则一次性地从表中删除所有的数据页并不把单独的删除操作记录记入日志保存,删除行是不能恢复的。并且在删除的过程中不会激活与表有关的删除触发器。执行速度快。
DELETE语句可以通过WHERE对要删除的记录进行选择。而使用TRUNCATE TABLE将删除表中的所有记录。因此,DELETE语句更灵活。如果DELETE不加WHERE子句,
DELETE可以返回被删除的记录数,而TRUNCATE TABLE返回的是0。如果一个表中有自增字段,使用TRUNCATE TABLE和没有WHERE子句的DELETE删除所有记录后,这个自增字段将起始值恢复成1.如果你不想这样做的话,可以在DELETE语句中加上永真的WHERE,如WHERE
1或WHERE true。DELETE FROM table1 WHERE 1;
select 5条数据 into #临时表 from 1亿条数据的牛X表
truncate table 1亿条数据的牛X表 --让它牛X,不到10毫秒干掉它。
insert 1亿条数据的牛X表 select * from #临时表
drop table #临时表
truncate和 delete只删除数据不删除表的结构(定义)
; drop语句将删除表的结构被依赖的约束(constrain),触发器(trigger),索引(index); 依赖于该表的存储过程/函数将保留,但是变为invalid状态.
1、TRUNCATE在各种表上无论是大的还是小的都非常快。如果有ROLLBACK命令DELETE将被撤销,而TRUNCATE则不会被撤销。
2、truncate不能进行回滚操作。
3、truncate不触发任何delete触发器。
5、当表被truncate后,这个表和索引所占用的空间会恢复到初始大小,而delete操作不会减少表或索引所占用的空间。
6、不能truncate一个带有外键的表,如果要删除首先要取消外键,然后再删除。
DELETE语句执行删除的过程是每次从表中删除一行,并且同时将该行的的删除操作作为事务记录在日志中保存以便进行进行回滚操作。
TRUNCATE TABLE 则一次性地从表中删除所有的数据页并不把单独的删除操作记录记入日志保存,删除行是不能恢复的。并且在删除的过程中不会激活与表有关的删除触发器。执行速度快。
DELETE语句可以通过WHERE对要删除的记录进行选择。而使用TRUNCATE TABLE将删除表中的所有记录。因此,DELETE语句更灵活。如果DELETE不加WHERE子句,
DELETE可以返回被删除的记录数,而TRUNCATE TABLE返回的是0。如果一个表中有自增字段,使用TRUNCATE TABLE和没有WHERE子句的DELETE删除所有记录后,这个自增字段将起始值恢复成1.如果你不想这样做的话,可以在DELETE语句中加上永真的WHERE,如WHERE
1或WHERE true。DELETE FROM table1 WHERE 1;
相关文章推荐
- 1亿条数据中保留5条删除其他的有什么快点的方法:)
- 在一个程序中需要用到全局变量(在多个class之间共享数据),请问如何定义具有这种功能的变量?或者是否有其他的方法解决多个class之间的数据共享(尽量简单实现)。 首先应该明确 Java中没有全局变
- 给定一个字符串s,你可以从中删除一些字符,使得剩下的串是一个回文串。如何删除才能使得回文串最长呢? 输出需要删除的字符个数。
- 考虑下列生成二进制的过程,编译器被用来生成单个单元的目标代码,链接器被用来将多个目标单元合并成一个程序二进制,链接器如何改变指令和数据到内存地址的绑定?需要什么信息从编译器传递给链接器,以协助完成链接
- 向大家请教一个关于sharepoint2003的问题,如何使一个Custom List in Datasheet View中某个field从其他list抽取数据当显示时?
- oracle如何删除一个用户下的所有数据?
- 如何在Win7和Win8双系统中删除其中一个
- 如何遍历删除一个list中的特定数据
- 1.01一个单向链表,不知道头节点,一个指针指向其中的一个节点,问如何删除这个指针指向的节点?
- 一个单向链表,不知道头节点,一个指针指向其中一个节点,问如何删除这个指针指向的节点?
- pdf文件如何删除其中的一个页面
- 如何删除数据库一个表中某列是重复的数据?
- 如何用C语言产生10000个不重复的随机整数?并且把它写入到一个文本文件中作为其他函数测试用的数据。
- oracle如何对表同一个表重复的数据进行删除
- 数据库表中有重复记录,如何删除这些重复记录保留ID最大的一个信息
- 要代码 c#中如何向其中插入文件 sql数据库中有一个text类型数据
- [FIM]如何从A导入数据,同步到B,在A系统中删除数据,在B系统中保留数据并修改状态
- 如何删除一个表中某列是重复的数据?
- 如何删除重复数据,只保留一条
- 如何删除表中的重复记录只保留其中一条?