oracle新件索引估计表空间大小

有一些数据量很大的表,几个亿左右的数据,现在需要对一个字段建立索引,请问有方法可以预先估计需要多大的表空间,怕表空间不够建不了索引!

看你的索引字段有多大,如int 4字节, varchar不一定。
另外还要看你的聚集索引占多大,一般索引都会挂聚集索引,即每个非聚集索引都会包含改表的聚集索引,如果聚集索引过大,索引也会很大。
大概给你算一下,假设 聚集索引 bigint 8字节,索引:4字节, 大概4字节元数据;就是
16*几个亿 , 差不多50 个亿字节,差不多要5GB追问

哥,问下,你这是咋算的啊!??

追答

只是举一个例子,不一定准,另外,索引页不一定填满,所以应该大于这个值。
具体你可以参考一下 SQLServer 技术内幕--存储引擎, Oracle 索引结构应该类似。
另外lwl2046说得不对,每个索引不管是否重复,都会对应一个主键,btree表是对应的聚集索引,堆表是对应的数据行的逻辑存储位置

温馨提示:内容为网友见解,仅供参考
第1个回答  2012-03-21
索引其实是相对于索引列进行的DISTINCT操作的结果集;这个结果集多大,索引占空间大小应该接近;
比如varchar(20)的字段。distinct操作后记录行1000W。则大小解决。20×1000×10000 字节
20×1000×10000/1024/1024~~200G。不过这里想象的是字段大小全部被填充。实际中可能使用到的只是一小部分。看你实际存储内容的大小。用select length(var1),count(*) from t group by var1.大致可以计算出var1列上的索引空间。实际空间会略大于计算所得
第2个回答  2012-03-20
表空间的数据文件设置成自动增长就行了,只要你的磁盘空间够用就行
相似回答