|
如果只有1列,确实像你说的,但3列就不同了
SQL> create table varchar1 pctfree 0 as select cast(to_char(mod(abs(dbms_random.random),10),'fm9') as varchar(1))a from dual connect by level<=1E6;
表已创建。
已用时间: 00: 00: 09.79
SQL> create table varchar1c compress as select a from varchar1;
表已创建。
已用时间: 00: 00: 02.24
SQL> select sum(bytes)s,segment_name,segment_type from user_segments group by segment_name,segment_type order by 2;
S SEGMENT_NAME SEGMENT_TYPE
---------- --------------------------------------------------------------------------------- ------------------
1.6770E+10 HU TABLE PARTITION
1.7807E+10 HUC TABLE
5.4105E+10 REN TABLE PARTITION
1208614912 REN4 TABLE PARTITION
1196228608 REN4_1 TABLE
3.6840E+10 REN5 TABLE PARTITION
5.9121E+10 RENC TABLE
13631488 T54 TABLE
27262976 T54_0 TABLE
11534336 T54_2 TABLE
8388608 T54_3 TABLE
17825792 T54_4 TABLE
17825792 T54_7 TABLE
11534336 VARCHAR1 TABLE
11534336 VARCHAR1C TABLE
已选择15行。
已用时间: 00: 00: 00.11
SQL> drop table varchar1c purge;
表已删除。
已用时间: 00: 00: 00.06
SQL> create table varchar1c compress as select a from varchar1 order by 1;
表已创建。
已用时间: 00: 00: 00.92
SQL> select sum(bytes)s,segment_name,segment_type from user_segments group by segment_name,segment_type order by 2;
S SEGMENT_NAME SEGMENT_TYPE
---------- --------------------------------------------------------------------------------- ------------------
1.6770E+10 HU TABLE PARTITION
1.7807E+10 HUC TABLE
5.4105E+10 REN TABLE PARTITION
1208614912 REN4 TABLE PARTITION
1196228608 REN4_1 TABLE
3.6840E+10 REN5 TABLE PARTITION
5.9121E+10 RENC TABLE
13631488 T54 TABLE
27262976 T54_0 TABLE
11534336 T54_2 TABLE
8388608 T54_3 TABLE
17825792 T54_4 TABLE
17825792 T54_7 TABLE
11534336 VARCHAR1 TABLE
11534336 VARCHAR1C TABLE
已选择15行。
已用时间: 00: 00: 00.06
SQL> insert into varchar1 select NULL from varchar1;
已创建1000000行。
已用时间: 00: 00: 00.70
SQL> drop table varchar1c purge;
表已删除。
已用时间: 00: 00: 00.13
SQL> create table varchar1c compress as select a from varchar1 order by 1;
表已创建。
已用时间: 00: 00: 01.67
SQL> select sum(bytes)s,segment_name,segment_type from user_segments group by segment_name,segment_type order by 2;
S SEGMENT_NAME SEGMENT_TYPE
---------- --------------------------------------------------------------------------------- ------------------
1.6770E+10 HU TABLE PARTITION
1.7807E+10 HUC TABLE
5.4105E+10 REN TABLE PARTITION
1208614912 REN4 TABLE PARTITION
1196228608 REN4_1 TABLE
3.6840E+10 REN5 TABLE PARTITION
5.9121E+10 RENC TABLE
13631488 T54 TABLE
27262976 T54_0 TABLE
11534336 T54_2 TABLE
8388608 T54_3 TABLE
17825792 T54_4 TABLE
17825792 T54_7 TABLE
23068672 VARCHAR1 TABLE
23068672 VARCHAR1C TABLE
已选择15行。
已用时间: 00: 00: 00.06
SQL> drop table varchar1c purge;
表已删除。
已用时间: 00: 00: 00.08
SQL> drop table varchar1 purge;
表已删除。
已用时间: 00: 00: 00.13
SQL> create table varchar2 pctfree 0 as select cast(to_char(mod(abs(dbms_random.random),100),'fm99') as varchar(2))a from dual connect by level<=1E6;
create table varchar2 pctfree 0 as select cast(to_char(mod(abs(dbms_random.random),100),'fm99') as varchar(2))a from dual connect by level<=1E6
*
第 1 行出现错误:
ORA-00903: 表名无效
已用时间: 00: 00: 00.01
SQL> create table varchr2 pctfree 0 as select cast(to_char(mod(abs(dbms_random.random),100),'fm99') as varchar(2))a from dual connect by level<=1E6;
表已创建。
已用时间: 00: 00: 09.75
SQL> insert into varchar1 select NULL from varchar1;
insert into varchar1 select NULL from varchar1
*
第 1 行出现错误:
ORA-00942: 表或视图不存在
已用时间: 00: 00: 00.02
SQL> insert into varchr2 select NULL from varchr2;
已创建1000000行。
已用时间: 00: 00: 01.79
SQL> create table varchr2c compress as select a from varchr2 order by 1;
表已创建。
已用时间: 00: 00: 01.66
SQL> select sum(bytes)s,segment_name,segment_type from user_segments group by segment_name,segment_type order by 2;
S SEGMENT_NAME SEGMENT_TYPE
---------- --------------------------------------------------------------------------------- ------------------
1.6770E+10 HU TABLE PARTITION
1.7807E+10 HUC TABLE
5.4105E+10 REN TABLE PARTITION
1208614912 REN4 TABLE PARTITION
1196228608 REN4_1 TABLE
3.6840E+10 REN5 TABLE PARTITION
5.9121E+10 RENC TABLE
13631488 T54 TABLE
27262976 T54_0 TABLE
11534336 T54_2 TABLE
8388608 T54_3 TABLE
17825792 T54_4 TABLE
17825792 T54_7 TABLE
23068672 VARCHR2 TABLE
23068672 VARCHR2C TABLE
已选择15行。
已用时间: 00: 00: 00.06
SQL> select * from varchr2 where rownum<=10;
A
--
64
83
3
43
60
63
89
78
50
96
已选择10行。
已用时间: 00: 00: 00.05
SQL> select * from varchr2c where rownum<=10;
A
--
0
0
0
0
0
0
0
0
0
0
已选择10行。
已用时间: 00: 00: 00.62
SQL> select * from varchr2c where a is null and rownum<=10;
A
--
已选择10行。
已用时间: 00: 00: 00.58
SQL> drop table varchr2 purge;
表已删除。
已用时间: 00: 00: 00.09
SQL> drop table varchar2c purge;
drop table varchar2c purge
*
第 1 行出现错误:
ORA-00942: 表或视图不存在
已用时间: 00: 00: 00.02
SQL> drop table varchr2c purge;
表已删除。
已用时间: 00: 00: 00.10
SQL> purge recyclebin;
回收站已清空。
已用时间: 00: 00: 00.01
SQL> create table t3 as select h02,h09,h10 from hu where rownum<=1E6;
表已创建。
已用时间: 00: 00: 03.20
SQL> drop table t3 purge;
表已删除。
已用时间: 00: 00: 00.09
SQL> create table t3pct0 pctfree 0 as select h02,h09,h10 from hu where rownum<=1E6;
表已创建。
已用时间: 00: 00: 01.22
SQL> create table t3comp compress as select h02,h09,h10 from t3pct0;
表已创建。
已用时间: 00: 00: 02.76
SQL> select sum(bytes)s,segment_name,segment_type from user_segments group by segment_name,segment_type order by 2;
S SEGMENT_NAME SEGMENT_TYPE
---------- --------------------------------------------------------------------------------- ------------------
1.6770E+10 HU TABLE PARTITION
1.7807E+10 HUC TABLE
5.4105E+10 REN TABLE PARTITION
1208614912 REN4 TABLE PARTITION
1196228608 REN4_1 TABLE
3.6840E+10 REN5 TABLE PARTITION
5.9121E+10 RENC TABLE
12582912 T3COMP TABLE
14680064 T3PCT0 TABLE
13631488 T54 TABLE
27262976 T54_0 TABLE
11534336 T54_2 TABLE
8388608 T54_3 TABLE
17825792 T54_4 TABLE
17825792 T54_7 TABLE
已选择15行。
已用时间: 00: 00: 00.07
SQL> |
|