创建索引占用的空间大小计算

zhangseyan 2010-06-22 04:30:01
有一个数据表,按照组合主键创建的唯一索引,今天查询了下,数据文件2.5G,索引7.8G

感觉索引占用好多,想问下索引占用空间是怎么计算的,在线等
...全文
544 8 打赏 收藏 转发到动态 举报
写回复
用AI写文章
8 条回复
切换为时间正序
请发表友善的回复…
发表回复
小灰狼W 2010-07-21
  • 打赏
  • 举报
回复
索引如果不压缩的话,就是将表中的索引相关字段按顺序进行储存,索引中的数据包含相关字段数据,及对应的记录的rowid。所占空间为它们所占用块的总大小
zhangseyan 2010-07-21
  • 打赏
  • 举报
回复
非常感谢,虽然还是不知道索引计算规则..
小灰狼W 2010-07-21
  • 打赏
  • 举报
回复
select lf_blks,br_blks,used_space,opt_cmpr_count,opt_cmpr_pctsave from index_stats;
opt_cmpr_count是系统推荐的压缩列数,来减少索引占用空间和I/O,opt_cmpr_pctsave是压缩后可以节省的空间百分比
使用alter index INDEX_NAME rebuild compress N; N即压缩列数
来重建压缩索引
小灰狼W 2010-07-21
  • 打赏
  • 举报
回复
analyze index IND_NAME validate structure;
select used_space from index_stats
where name='XXXX';
zhangseyan 2010-07-21
  • 打赏
  • 举报
回复
还有这个帖子,好几个月了...盼望解决下

现在知道了delete数据的时候高水线不下降,索引不变小,重新建了一下索引果然小了很多,但是索引大小事怎么计算的还是不知道
zhangseyan 2010-06-22
  • 打赏
  • 举报
回复
我是想知道为什么会产生这么大的索引。我select a.leaf_blocks,b.blocks from dba_indexes a,dba_segments b where a.owner=b.owner and a.indexname =b.segment_name and index_name='**' 查询出来的leaf_blocks与dba_segments.blocks发现没什么释放的余地,想知道索引产生规则及占用这么多空间的原因
ojuju10 2010-06-22
  • 打赏
  • 举报
回复
select sum(bytes)/1024/1024 from user_segments
where segment_name ='IDXName
ngx20080110 2010-06-22
  • 打赏
  • 举报
回复
关注,学习

17,377

社区成员

发帖
与我相关
我的任务
社区描述
Oracle 基础和管理
社区管理员
  • 基础和管理社区
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧