12
返回列表 发新帖
楼主: xiaowg

相似索引,但大小确相差悬殊!

[复制链接]
论坛徽章:
3
授权会员
日期:2007-03-01 12:08:54会员2007贡献徽章
日期:2007-09-26 18:42:10祖国60周年纪念徽章
日期:2009-10-09 08:28:00
11#
发表于 2007-6-18 20:38 | 只看该作者
取决于索引插入时的分裂程度
create table kkk ( i CHAR(1000),c char(1000));
create unique index i1 on kkk(i,c);
create unique index i2 on kkk(C,I);
先插入数据
SQL> BEGIN
  2   FOR I IN 1 .. 10   LOOP
  3    FOR J IN 1 .. 1000 LOOP
  4    INSERT INTO KKK VALUES (I,J);
  5   END LOOP;
  6  END LOOP;
  7  COMMIT;
8  END;
9  /

ANALYZE INDEX I1 COMPUTE STATISTICS;
ANALYZE INDEX I2 COMPUTE STATISTICS;

select * from dba_indexes ind where ind.index_name in ('I1','I2')
得到结果 I1  8 个节点 I2 10 个节点
DROP TABLE KKK;
create table kkk ( i CHAR(1000),c char(1000));
create unique index i1 on kkk(i,c);
create unique index i2 on kkk(C,I);
INSERT INTO KKK VALUES ('1','1');
INSERT INTO KKK VALUES ('1','4');
INSERT INTO KKK VALUES ('1','7');
INSERT INTO KKK VALUES ('1','9');
INSERT INTO KKK VALUES ('3','3');
INSERT INTO KKK VALUES ('2','5');
INSERT INTO KKK VALUES ('2','7');
INSERT INTO KKK VALUES ('2','9');
INSERT INTO KKK VALUES ('1','10');
INSERT INTO KKK VALUES ('1','2');
INSERT INTO KKK VALUES ('1','3');
INSERT INTO KKK VALUES ('1','5');
INSERT INTO KKK VALUES ('1','6');
INSERT INTO KKK VALUES ('1','8');
INSERT INTO KKK VALUES ('2','1');
INSERT INTO KKK VALUES ('2','2');
INSERT INTO KKK VALUES ('2','4');
INSERT INTO KKK VALUES ('2','6');
INSERT INTO KKK VALUES ('2','8');
INSERT INTO KKK VALUES ('2','10');
COMMIT;
ANALYZE INDEX I1 COMPUTE STATISTICS;
ANALYZE INDEX I2 COMPUTE STATISTICS;
select * from dba_indexes ind where ind.index_name in ('I1','I2')
得到结果 I1  11 个节点 I2 10 个节点
所以与插入顺序有关

使用道具 举报

回复
论坛徽章:
0
12#
发表于 2007-6-19 10:32 | 只看该作者
也就是说在形成索引的过程中有些差异,但是把索引全部rebuild一下,应该所占存储是差不多的吧。。。

使用道具 举报

回复
论坛徽章:
18
ITPUB社区OCM联盟徽章
日期:2013-04-02 09:38:102013年新春福章
日期:2013-02-25 14:51:24ITPUB 11周年纪念徽章
日期:2012-10-09 18:06:20ITPUB十周年纪念徽章
日期:2011-11-01 16:20:28奥运纪念徽章
日期:2012-12-06 09:21:40凯迪拉克
日期:2013-08-22 14:55:37雪佛兰
日期:2014-01-22 11:02:36夏利
日期:2014-01-07 14:14:25蛋疼蛋
日期:2013-05-17 15:36:26本田
日期:2013-12-12 12:00:45
13#
 楼主| 发表于 2007-6-20 09:17 | 只看该作者
最初由 oraclerain 发布
[B]也就是说在形成索引的过程中有些差异,但是把索引全部rebuild一下,应该所占存储是差不多的吧。。。 [/B]


此表中有超过200M的记录,REBUILD INDEX很费时且需大量磁盘空间

使用道具 举报

回复
论坛徽章:
18
ITPUB社区OCM联盟徽章
日期:2013-04-02 09:38:102013年新春福章
日期:2013-02-25 14:51:24ITPUB 11周年纪念徽章
日期:2012-10-09 18:06:20ITPUB十周年纪念徽章
日期:2011-11-01 16:20:28奥运纪念徽章
日期:2012-12-06 09:21:40凯迪拉克
日期:2013-08-22 14:55:37雪佛兰
日期:2014-01-22 11:02:36夏利
日期:2014-01-07 14:14:25蛋疼蛋
日期:2013-05-17 15:36:26本田
日期:2013-12-12 12:00:45
14#
 楼主| 发表于 2007-6-20 09:20 | 只看该作者
最初由 com_dlj 发布
[B]取决于索引插入时的分裂程度
create table kkk ( i CHAR(1000),c char(1000));
create unique index i1 on kkk(i,c);
create unique index i2 on kkk(C,I);
先插入数据
SQL> BEGIN
  2   FOR I IN 1 .. 10   LOOP
  3    FOR J IN 1 .. 1000 LOOP
  4    INSERT INTO KKK VALUES (I,J);
  5   END LOOP;
  6  END LOOP;
  7  COMMIT;
8  END;
9  /

ANALYZE INDEX I1 COMPUTE STATISTICS;
ANALYZE INDEX I2 COMPUTE STATISTICS;

select * from dba_indexes ind where ind.index_name in ('I1','I2')
得到结果 I1  8 个节点 I2 10 个节点
DROP TABLE KKK;
create table kkk ( i CHAR(1000),c char(1000));
create unique index i1 on kkk(i,c);
create unique index i2 on kkk(C,I);
INSERT INTO KKK VALUES ('1','1');
INSERT INTO KKK VALUES ('1','4');
INSERT INTO KKK VALUES ('1','7');
INSERT INTO KKK VALUES ('1','9');
INSERT INTO KKK VALUES ('3','3');
INSERT INTO KKK VALUES ('2','5');
INSERT INTO KKK VALUES ('2','7');
INSERT INTO KKK VALUES ('2','9');
INSERT INTO KKK VALUES ('1','10');
INSERT INTO KKK VALUES ('1','2');
INSERT INTO KKK VALUES ('1','3');
INSERT INTO KKK VALUES ('1','5');
INSERT INTO KKK VALUES ('1','6');
INSERT INTO KKK VALUES ('1','8');
INSERT INTO KKK VALUES ('2','1');
INSERT INTO KKK VALUES ('2','2');
INSERT INTO KKK VALUES ('2','4');
INSERT INTO KKK VALUES ('2','6');
INSERT INTO KKK VALUES ('2','8');
INSERT INTO KKK VALUES ('2','10');
COMMIT;
ANALYZE INDEX I1 COMPUTE STATISTICS;
ANALYZE INDEX I2 COMPUTE STATISTICS;
select * from dba_indexes ind where ind.index_name in ('I1','I2')
得到结果 I1  11 个节点 I2 10 个节点
所以与插入顺序有关 [/B]


差异是肯定的,但你的例子还是无法解释大小相差近两倍的问题。

使用道具 举报

回复
论坛徽章:
50
2014年世界杯参赛球队: 荷兰
日期:2014-07-11 07:56:59蛋疼蛋
日期:2012-03-06 07:22:542012新春纪念徽章
日期:2012-02-13 15:09:522012新春纪念徽章
日期:2012-02-13 15:09:522012新春纪念徽章
日期:2012-02-13 15:09:522012新春纪念徽章
日期:2012-02-13 15:09:522012新春纪念徽章
日期:2012-02-13 15:09:522012新春纪念徽章
日期:2012-01-04 11:53:29蛋疼蛋
日期:2011-11-11 15:47:00ITPUB十周年纪念徽章
日期:2011-11-01 16:23:26
15#
发表于 2007-6-20 12:32 | 只看该作者

Re: 相似索引,但大小确相差悬殊!

最初由 xiaowg 发布
[B]一个TABLE上有两个索引,字段相同,仅第一第二字段的位置不同,但大小却相差悬殊,请高手解惑。

TABLESPACE CSINDX 是LMT & AUTOALLOCATE类型

CREATE UNIQUE INDEX CSCOST.HIST_LOTEVENTS_PK ON CSCOST.HIST_LOTEVENTS (EVTIME, LOTID, PREVHISTTIME, SEQNUM)
    TABLESPACE CSINDX PCTFREE 10 INITRANS 2 MAXTRANS 255 STORAGE ( INITIAL 64K NEXT 0K MINEXTENTS 1 MAXEXTENTS
    2147483645 PCTINCREASE 0) LOGGING;

CREATE INDEX CSCOST.HIST_LOTEVENTS_IK01 ON CSCOST.HIST_LOTEVENTS (LOTID, EVTIME, PREVHISTTIME, SEQNUM)
    TABLESPACE CSINDX PCTFREE 10 INITRANS 2 MAXTRANS 255 STORAGE ( INITIAL 64K NEXT 0K MINEXTENTS 1 MAXEXTENTS
    2147483645 PCTINCREASE 0) LOGGING;

select segment_name, bytes/1024, blocks, count(*) from dba_extents where tablespace_name = 'CSINDX'
group by segment_name, bytes/1024, blocks order by 1, 2;

SEGMENT_NAME                                                                      BYTES/1024     BLOCKS   COUNT(*)
--------------------------------------------------------------------------------- ---------- ---------- ----------
HIST_LOTEVENTS_IK01                                                                       64          8         16
HIST_LOTEVENTS_IK01                                                                     1024        128         63
HIST_LOTEVENTS_IK01                                                                     8192       1024        120
HIST_LOTEVENTS_IK01                                                                    65536       8192        146
HIST_LOTEVENTS_PK                                                                         64          8         16
HIST_LOTEVENTS_PK                                                                       1024        128         63
HIST_LOTEVENTS_PK                                                                       8192       1024        120
HIST_LOTEVENTS_PK                                                                      65536       8192         68


为何HIST_LOTEVENTS_IK01大小为10368M,但是HIST_LOTEVENTS_PK大小却为5376M??? [/B]


LZ我怎么看不懂你的这个啊,不是加起来两个一样大吗?

使用道具 举报

回复
论坛徽章:
3
授权会员
日期:2007-03-01 12:08:54会员2007贡献徽章
日期:2007-09-26 18:42:10祖国60周年纪念徽章
日期:2009-10-09 08:28:00
16#
发表于 2007-6-20 14:42 | 只看该作者
最初由 xiaowg 发布
[B]

差异是肯定的,但你的例子还是无法解释大小相差近两倍的问题。 [/B]

INSERT INTO KKK VALUES ('2','10');
INSERT INTO KKK VALUES ('2','9');
INSERT INTO KKK VALUES ('2','8');
INSERT INTO KKK VALUES ('2','7');
INSERT INTO KKK VALUES ('2','6');
INSERT INTO KKK VALUES ('2','5');
INSERT INTO KKK VALUES ('2','4');
INSERT INTO KKK VALUES ('2','3');
INSERT INTO KKK VALUES ('2','2');
INSERT INTO KKK VALUES ('2','1');
INSERT INTO KKK VALUES ('1','10');
INSERT INTO KKK VALUES ('1','9');
INSERT INTO KKK VALUES ('1','8');
INSERT INTO KKK VALUES ('1','7');
INSERT INTO KKK VALUES ('1','6');
INSERT INTO KKK VALUES ('1','5');
INSERT INTO KKK VALUES ('1','4');
INSERT INTO KKK VALUES ('1','3');
INSERT INTO KKK VALUES ('1','2');
INSERT INTO KKK VALUES ('1','1');
ANALYZE INDEX I1 COMPUTE STATISTICS;
ANALYZE INDEX I2 COMPUTE STATISTICS;
可以用17 叶子(oracle9i);

使用道具 举报

回复
论坛徽章:
18
ITPUB社区OCM联盟徽章
日期:2013-04-02 09:38:102013年新春福章
日期:2013-02-25 14:51:24ITPUB 11周年纪念徽章
日期:2012-10-09 18:06:20ITPUB十周年纪念徽章
日期:2011-11-01 16:20:28奥运纪念徽章
日期:2012-12-06 09:21:40凯迪拉克
日期:2013-08-22 14:55:37雪佛兰
日期:2014-01-22 11:02:36夏利
日期:2014-01-07 14:14:25蛋疼蛋
日期:2013-05-17 15:36:26本田
日期:2013-12-12 12:00:45
17#
 楼主| 发表于 2007-6-25 09:56 | 只看该作者
最初由 com_dlj 发布
[B]
INSERT INTO KKK VALUES ('2','10');
INSERT INTO KKK VALUES ('2','9');
INSERT INTO KKK VALUES ('2','8');
INSERT INTO KKK VALUES ('2','7');
INSERT INTO KKK VALUES ('2','6');
INSERT INTO KKK VALUES ('2','5');
INSERT INTO KKK VALUES ('2','4');
INSERT INTO KKK VALUES ('2','3');
INSERT INTO KKK VALUES ('2','2');
INSERT INTO KKK VALUES ('2','1');
INSERT INTO KKK VALUES ('1','10');
INSERT INTO KKK VALUES ('1','9');
INSERT INTO KKK VALUES ('1','8');
INSERT INTO KKK VALUES ('1','7');
INSERT INTO KKK VALUES ('1','6');
INSERT INTO KKK VALUES ('1','5');
INSERT INTO KKK VALUES ('1','4');
INSERT INTO KKK VALUES ('1','3');
INSERT INTO KKK VALUES ('1','2');
INSERT INTO KKK VALUES ('1','1');
ANALYZE INDEX I1 COMPUTE STATISTICS;
ANALYZE INDEX I2 COMPUTE STATISTICS;
可以用17 叶子(oracle9i); [/B]


不明白你此处“可以用17 叶子”是何意。

使用道具 举报

回复
论坛徽章:
18
ITPUB社区OCM联盟徽章
日期:2013-04-02 09:38:102013年新春福章
日期:2013-02-25 14:51:24ITPUB 11周年纪念徽章
日期:2012-10-09 18:06:20ITPUB十周年纪念徽章
日期:2011-11-01 16:20:28奥运纪念徽章
日期:2012-12-06 09:21:40凯迪拉克
日期:2013-08-22 14:55:37雪佛兰
日期:2014-01-22 11:02:36夏利
日期:2014-01-07 14:14:25蛋疼蛋
日期:2013-05-17 15:36:26本田
日期:2013-12-12 12:00:45
18#
 楼主| 发表于 2007-6-25 09:58 | 只看该作者

Re: Re: 相似索引,但大小确相差悬殊!

最初由 wabjtam123 发布
[B]

LZ我怎么看不懂你的这个啊,不是加起来两个一样大吗? [/B]


64kx16+1m*63+8m*120+64m*146=10368M
64kx16+1m*63+8m*120+64m*68=5376M

使用道具 举报

回复

您需要登录后才可以回帖 登录 | 注册

本版积分规则 发表回复

TOP技术积分榜 社区积分榜 徽章 团队 统计 知识索引树 积分竞拍 文本模式 帮助
  ITPUB首页 | ITPUB论坛 | 数据库技术 | 企业信息化 | 开发技术 | 微软技术 | 软件工程与项目管理 | IBM技术园地 | 行业纵向讨论 | IT招聘 | IT文档
  ChinaUnix | ChinaUnix博客 | ChinaUnix论坛
CopyRight 1999-2011 itpub.net All Right Reserved. 北京盛拓优讯信息技术有限公司版权所有 联系我们 未成年人举报专区 
京ICP备16024965号-8  北京市公安局海淀分局网监中心备案编号:11010802021510 广播电视节目制作经营许可证:编号(京)字第1149号
  
快速回复 返回顶部 返回列表