用DELETE FROM AAA WHERE B='1' 删除从192万条记录的表时,表的记录总数为265万条,B字段已建立了索引,select * from aaa where b='1'命令只需2秒。
解决方案 »
- 语句转换
- SYSTEM表空间和SYSAUX表空间99%以上100%未满对数据库访问性能有影响吗?
- Oracle 10g的启动服务问题?
- 高分求助:在触发器中如何实现不同数据库之间的数据传递,急。。。
- JDBC中怎样提高数据库的查询速度
- 很弱的问题:数据不能插入!增么办?急!!!在线等!
- 为什么我从access导出到oracle的表,在oracle中没有?
- OracleOraHome81ManagementServer启动问题
- 查询语句的优化问题???来者有分
- sqlldr导入txt数据,在数据库成生一个log_record表(最好是存储过程) 急急急..!
- imp命令
- 请教各位, CASCADE是干什么用的,起什么作用?
create table AAA_bak as select * from AAA where B<>'1';
drop table AAA;
rename table AAA_bak to AAA;
2.alter table aaa nologging
但是原来表的约束就没了,还要重新建的.
drabit(square)
1.把索引去掉或者用DELETE FROM AAA WHERE to_char(B)='1'
2.alter table aaa nologging
用以下方法删2小时左右
cDelFalg := '1';
WHILE cDelFalg = 1
LOOP
DELETE FROM
aaaa
WHERE
.....
AND ROWNUM < 10000; --防止回滚段不够
IF SQL%ROWCOUNT <= 0 THEN
cDelFalg:='0';
END IF;
COMMIT;
END LOOP;
truncate table AAA;
inport AAA_BAK DATA TO AAA.
truncate table AAA;
inport AAA_BAK DATA TO AAA.