第2个回答 2014-12-02
delete 删的慢 写大量日志
truncate 删的快 写少量日志
SQL> select count(*) from test;
COUNT(*)
----------
2783488
Elapsed: 00:00:00.22
SQL> select count(*) from test1;
COUNT(*)
----------
2783488
Elapsed: 00:00:00.34
SQL> select object_name,object_id,data_object_id from dba_objects where object_name in ('TEST','TEST1');
OBJECT_NAM OBJECT_ID DATA_OBJECT_ID
---------- ---------- --------------
TEST1 88856 88856
TEST 88851 88851
Elapsed: 00:00:00.01
SQL> delete from test;
2783488 rows deleted.
Elapsed: 00:03:04.93
SQL> truncate table test1;
Table truncated.
Elapsed: 00:00:02.03
SQL> select object_name,object_id,data_object_id from dba_objects where object_name in ('TEST','TEST1');
OBJECT_NAM OBJECT_ID DATA_OBJECT_ID
---------- ---------- --------------
TEST1 88856 88857
TEST 88851 88851
Elapsed: 00:00:00.14