《Truncate table one or million rows》

摘要:《Truncate table one or million rows》


itPUB 上看到一个问题,心血来潮想验证一下;

问题是 truncate table 数百万笔数据要多少时间,此版主反问 truncate table 2 笔数据要多少时间。

我的老师说 truncate table 是将 high water mark 从高点归回原位,数据并未删除;

那 truncate table 的时间应该一样吧! 作个小实验!

SQL> CREATE TABLE TINGTEST AS SELECT * FROM DBA_OBJECTS;

已建立表格.

SQL> CREATE TABLE TINGTEST2 AS SELECT * FROM DBA_OBJECTS WHERE ROWNUM<2;

已建立表格.

SQL> SELECT COUNT(*)  FROM TINGTEST;

  COUNT(*)
----------
     44264

SQL> INSERT INTO TINGTEST SELECT * FROM TINGTEST;

已建立 44264 个数据列.

SQL> INSERT INTO TINGTEST SELECT * FROM TINGTEST;

已建立 88528 个数据列.

SQL> INSERT INTO TINGTEST SELECT * FROM TINGTEST;

已建立 177056 个数据列.

SQL> INSERT INTO TINGTEST SELECT * FROM TINGTEST;

已建立 354112 个数据列.

SQL> INSERT INTO TINGTEST SELECT * FROM TINGTEST;

已建立 708224 个数据列.

SQL> INSERT INTO TINGTEST SELECT * FROM TINGTEST;

已建立 1416448 个数据列.

SQL> INSERT INTO TINGTEST SELECT * FROM TINGTEST;

已建立 2832896 个数据列.

SQL> COMMIT;

确认完成.

SQL> SELECT COUNT(*) FROM TINGTEST;

  COUNT(*)
----------
   5665792

SQL> SELECT COUNT(*) FROM TINGTEST2;

  COUNT(*)
----------
         1

SQL> SET TIMING ON
SQL> TRUNCATE TABLE TINGTEST;

表格被截断.

目前历时: 00:00:00.02
SQL> TRUNCATE TABLE TINGTEST2;

表格被截断.

目前历时: 00:00:00.00

总结看来比较大的数据表还是比较慢,但是都很快是不争的事实!

原文:大专栏  《Truncate table one or million rows》


上一篇:英语阅读句子


下一篇:js 判断整数