---压缩表可减少数据量,从而减少IO
DROP TABLE t purge;
CREATE TABLE t NOCOMPRESS AS
SELECT rownum AS n, rpad(' ',500,mod(rownum,15)) AS pad
FROM dual
CONNECT BY level <= 200000;
--收集表统计信息
admin@ORCL> execute dbms_stats.gather_table_stats('ADMIN','T');
PL/SQL 过程已成功完成。
--未压缩的表当前情况
admin@ORCL> SELECT table_name, blocks,compression FROM user_tables WHERE table_name = 'T';
TABLE_NAME BLOCKS COMPRESS
------------------------------ ---------- --------
T 14449 DISABLED
admin@ORCL> set autotrace on
--查看资源消耗,COST 为3185,逻辑读为14297
admin@ORCL> select count(*) from t;
COUNT(*)
----------
200000
统计信息
----------------------------------------------------------
1 recursive calls
0 db block gets
14297 consistent gets
0 physical reads
0 redo size
408 bytes sent via SQL*Net to client
385 bytes received via SQL*Net from client
2 SQL*Net roundtrips to/from client
0 sorts (memory)
0 sorts (disk)
1 rows processed
--开始压缩表
ALTER TABLE t MOVE COMPRESS;
execute dbms_stats.gather_table_stats('ADMIN','T');
admin@ORCL> SELECT table_name, blocks,compression FROM user_tables WHERE table_name = 'T';
TABLE_NAME BLOCKS COMPRESS
------------------------------ ---------- --------
T 2639 ENABLED
set autotrace on
admin@ORCL> select count(*) from t;
COUNT(*)
----------
200000