看了相关oracle资料,以及网上查了下,都没谈及如下问题:
位图索引中某个键值的开始rowid,截止rowid如何定的,这个范围囊括了整个表的所有行的rowid吗?还是一个键值可能有多段的开始rowid,截止rowid?如果是前者,那rowid很简单,就是整个段的开始,结尾,但感觉是这样的话有点浪费空间呢。举例来说,如果有个1千万条记录的表。某列有10个键值。那么每个键值的开始rowid,截止rowid都是一样的吗,都是囊括了整个表的范围吗?谢谢各位大牛指教!
位图索引中某个键值的开始rowid,截止rowid如何定的,这个范围囊括了整个表的所有行的rowid吗?还是一个键值可能有多段的开始rowid,截止rowid?如果是前者,那rowid很简单,就是整个段的开始,结尾,但感觉是这样的话有点浪费空间呢。举例来说,如果有个1千万条记录的表。某列有10个键值。那么每个键值的开始rowid,截止rowid都是一样的吗,都是囊括了整个表的范围吗?谢谢各位大牛指教!
解决方案 »
- win7 旗舰版32位 装oracle10g 报错
- oracle优化器有哪些?oracle11g只留下了哪个
- BLOB与LONG RAW
- TOAD9.6版本的问题
- oradata恢復后沒數據,請幫幫忙,急!!!!!!
- 创建表空间的问题:提示创建成功,可是给用户指定此表空间的时候提示表空间不存在!
- ORA-29861: domain index is marked LOADING/FAILED/UNUSABLE
- 想做一个分页的程序。如何让oracle 每次只返回20条数据?
- 一个关于ORACLE地特殊话题
- oracle 多表查询
- 在先等求 数据库查询优化问题
- oracle 删除数据文件错误!!在线等,急急急
其实并不浪费空间 只是一个"位"而已呀 并没有把整行数据存进去起始ROWID:为位图的起始地址,即位图中第一行的ROWID。包括相对文件号,在相对文件中的块号,和块中的行号。
终止ROWID:为位图的终止地址,即位图中最后一行的ROWID。也包括相对文件号,在相对文件中的块号,和块中的行号。
怎么我几天没来你就多了两朵大红花和一个小红星羡慕ing ~
呵呵
那么位图索引段所占的空间我能否如此大概估算,以1个1000万记录的表为例,就有1000万个rowid,一个rowid为1位,则有10000000/8/1024/1024=1.2Mb,也就是说每一个键值至少包含了2*1.2M的空间,假设有50个键值,那就100多兆,这个空间占用不可观吗?oracle需要把索引载到存储区中吧,这个对存储区的要求不是高了阿。不知大牛对索引段所占空间,对数据库运行的影响等,是如何理解的?请不吝指点一二。感谢!
有两个地方需要指出
1
一个rowid不会只占1位的
2
在你的说法中 说一个键值占2*1.2M 这里为什么要乘2呢
1位的话可以为0或者为1 就足以代表该位的值是否满足该键值了呀至于你说的100M空间 我觉得如果在一个比较大的系统里 100M的索引应该也还好吧
呵呵 我没接触过太大的系统 所以也不能很准确的回答你
不过一般来说索引通常都是会增加数据库运行性能的