1,测试表的多列为空与多列为空字符串的区别
1,数据量是1000w
declare
type typ_tab_col1 is table of pls_integer index by pls_integer;
typ_tab_col1_1 typ_tab_col1;
begin
for i in 1..10000000 loop
typ_tab_col1_1(i):=i;
end loop;
forall i in 1..10000000
insert into t_more_col values(typ_tab_col1_1(i),null,null,null,null,null,null,null,null,null);
commit;
end;
2,列为10列
3,插入
1,空用时 已用时间: 00: 00: 19.59
2,空字符串用时 已用时间: 00: 01: 00.43
3,小结:空比空字符串插入更快
4,查询
1,在有数据的基础上
2,空时,查询 已用时间: 00: 00: 00.31
3,空字符串时,查询 已用时间: 00: 00: 00.45
4,小结:说明查询时空比空字符串更快
5,更新
1,在有数据基础上
2,空时,已用时间: 00: 07: 45.56 update t_more_col set col1=20,col8=20;
3,空字符串时 已用时间: 00: 03: 18.40
4,小结:说明空字符串比空更新要快的
6,删除
1,在有数据基础上
2,空时,delete from t_more_col where rownum<100000;已用时间: 00: 00: 00.62
3,空字符串时 已用时间: 00: 00: 00.54
4,小结:说明空字符串比空删除快一些
7,表的结构
create table t_more_col(col1 int,col2 int,col3 int,col4 int,col5 int,col6 int,col7 int,col8 int,col9 int, col10 int);
8,数据量
1,空时,
00:05:44 SQL> select segment_name,bytes/1024/1024 mb,segment_type from user_segm
ents where segment_name='T_MORE_COL';
SEGMENT_NAME
--------------------------------------------------------------------------------
MB SEGMENT_TYPE
---------- ------------------
T_MORE_COL
120 TABLE
2,空字符时,
SEGMENT_NAME
-------------------------
MB SEGMENT_TYPE
---------- --------------
T_MORE_COL
320 TABLE
3,小结:很明显,空比空字符占用的存储空间更少;
来自 “ ITPUB博客 ” ,链接:http://blog.itpub.net/9240380/viewspace-744854/,如需转载,请注明出处,否则将追究法律责任。
转载于:http://blog.itpub.net/9240380/viewspace-744854/