考试大编辑整理:如果表的高水位线比较高,或者表经历了大数据量的产生操作,经常会使用ALTER TABLE MOVE的方法来减少表占用的空间。
不过今天才发现以前对MOVE的了解一直存在偏差。
看一个简单的例子:
两张表几乎一样大,而且都是空表。但是通过MOVE之后,得到的结果却完全不同。
SQL> SELECT SEGMENT_NAME, BYTES/1024/1024/1024 G
2 FROM USER_SEGMENTS
3 WHERE SEGMENT_NAME LIKE 'T_BIG_TABLE%';
SEGMENT_NAME G
------------------------------ ----------
T_BIG_TABLE 1
T_BIG_TABLE2 1.3125
SQL > ALTER TABLE T_BIG_TABLE MOVE;
表已更改。
SQL> ALTER TABLE T_BIG_TABLE2 MOVE;
表已更改。
SQL> SELECT SEGMENT_NAME, BYTES/1024/1024/1024 G
2 FROM USER_SEGMENTS
3 WHERE SEGMENT_NAME LIKE 'T_BIG_TABLE%';
SEGMENT_NAME G
------------------------------ ----------
T_BIG_TABLE 1
T_BIG_TABLE2 .000061035
SQL > SELECT COUNT(*) FROM T_BIG_TABLE;
COUNT(*)
----------
0
SQL > SELECT COUNT(*) FROM T_BIG_TABLE2;
COUNT(*)
----------
0