如何删除表中大量数据
2012-03-20 17:09
183 查看
数据库使用:如何删除表中大量数据
1、现象、问题描述
有时需要删除表中的大部分数据,但并不是要把表清空。
2、关键过程、根本原因分析
方法一(不推荐)
Delete from taba where logtime <to_date(‘2007-01-01 00:00:00’,’yyyy-mm-dd hh24:mi:ss’)
这种方式要记录日志,如果logtime字段上有索引,因为删除表中大部分数据优化器更会选择全表scan,速度很慢。如果事务太大还可以引起日志空间(或undo 表空间)满。
方法二
Oracle的方法
1. create smsbak as select * from taba where logtime >=to_date(‘2007-01-01 00:00:00’,’yyyy-mm-dd hh24:mi:ss’)
2. drop table taba
3. rename smsbak to taba
4. 创建索引
Db2的方法
1. db2 => create table SM_HISTABLE0301bak like SM_HISTABLE0301
2. db2 => declare my cursor for select * from SM_HISTABLE0301 where OrgAddr>'712755777'
3. db2 => load from my of cursor insert into SM_HISTABLE0301bak
4. db2 => drop table SM_HISTABLE0301
5. db2 => rename table SM_HISTABLE0301bak to SM_HISTABLE0301
6. 创建索引 阅读更多
1、现象、问题描述
有时需要删除表中的大部分数据,但并不是要把表清空。
2、关键过程、根本原因分析
方法一(不推荐)
Delete from taba where logtime <to_date(‘2007-01-01 00:00:00’,’yyyy-mm-dd hh24:mi:ss’)
这种方式要记录日志,如果logtime字段上有索引,因为删除表中大部分数据优化器更会选择全表scan,速度很慢。如果事务太大还可以引起日志空间(或undo 表空间)满。
方法二
Oracle的方法
1. create smsbak as select * from taba where logtime >=to_date(‘2007-01-01 00:00:00’,’yyyy-mm-dd hh24:mi:ss’)
2. drop table taba
3. rename smsbak to taba
4. 创建索引
Db2的方法
1. db2 => create table SM_HISTABLE0301bak like SM_HISTABLE0301
2. db2 => declare my cursor for select * from SM_HISTABLE0301 where OrgAddr>'712755777'
3. db2 => load from my of cursor insert into SM_HISTABLE0301bak
4. db2 => drop table SM_HISTABLE0301
5. db2 => rename table SM_HISTABLE0301bak to SM_HISTABLE0301
6. 创建索引 阅读更多
相关文章推荐
- 如何对于大量数据 存储 和 查询 ,删除,修改。
- 如何删除大量数据 sql server2005
- 大量数据删除
- 如何处理大量数据高并发大流量并发操作方案
- hibernate导入大量数据时,为了避免内存中产生大量对象,在编码时注意什么,如何去除?
- 数据量很大的排序问题 大量数据如何排序
- 如何恢复在ms sql 数据库的企业管理器里误删除的数据
- C# winform datagridview中如何实现鼠标右键点击一行数据出现一个带有删除的菜单,并能执行删除操作?
- 如何在大量经纬度数据中搜索附近的点
- 如何利用arcgis server发布大量数据的地图
- 如何删除数据库表的重复数据
- 如何应对网站反爬虫策略?如何高效地爬大量数据?
- 如何在Oracle中批量删除数据
- 如何解决PHP里大量数据循环时内存耗尽的问题
- Mysql如何批量删除具有相同表前缀的数据表(纯SQL语句)
- Oracle中如何删除某个用户下的所有数据的方法
- [开发日志]SQL2008删除大量数据
- 如何在内存中自定义表用于添加和删除数据
- 如何彻底删除已经不存在的数据文件?
- 如何解决PHP里大量数据循环时内存耗尽的问题