社区
基础和管理
帖子详情
请教位图索引的结构
shunan
2010-01-06 03:42:35
看了相关oracle资料,以及网上查了下,都没谈及如下问题:
位图索引中某个键值的开始rowid,截止rowid如何定的,这个范围囊括了整个表的所有行的rowid吗?还是一个键值可能有多段的开始rowid,截止rowid?如果是前者,那rowid很简单,就是整个段的开始,结尾,但感觉是这样的话有点浪费空间呢。
举例来说,如果有个1千万条记录的表。某列有10个键值。那么每个键值的开始rowid,截止rowid都是一样的吗,都是囊括了整个表的范围吗?
谢谢各位大牛指教!
...全文
235
8
打赏
收藏
请教位图索引的结构
看了相关oracle资料,以及网上查了下,都没谈及如下问题: 位图索引中某个键值的开始rowid,截止rowid如何定的,这个范围囊括了整个表的所有行的rowid吗?还是一个键值可能有多段的开始rowid,截止rowid?如果是前者,那rowid很简单,就是整个段的开始,结尾,但感觉是这样的话有点浪费空间呢。 举例来说,如果有个1千万条记录的表。某列有10个键值。那么每个键值的开始rowid,截止rowid都是一样的吗,都是囊括了整个表的范围吗? 谢谢各位大牛指教!
复制链接
扫一扫
分享
转发到动态
举报
写回复
配置赞助广告
用AI写文章
8 条
回复
切换为时间正序
请发表友善的回复…
发表回复
打赏红包
shunan
2010-01-17
打赏
举报
回复
[Quote=引用 7 楼 markfilan 的回复:]
10000000/8/1024/1024=1.2Mb
这里为什么要除8呢?看不懂,呵呵!请大侠赐教!
[/Quote]
8bit == 1 byte,兄弟。
markfilan
2010-01-14
打赏
举报
回复
10000000/8/1024/1024=1.2Mb
这里为什么要除8呢?看不懂,呵呵!请大侠赐教!
shunan
2010-01-14
打赏
举报
回复
这里为什么要乘2呢. 是不需要乘以2,考虑错了。呵呵。非常感谢!
[Quote=引用 5 楼 wh62592855 的回复:]
你这么来计算大体上来讲应该没没错 当然 这只是我个人看法哦
有两个地方需要指出
1
一个rowid不会只占1位的
2
在你的说法中 说一个键值占2*1.2M 这里为什么要乘2呢
1位的话可以为0或者为1 就足以代表该位的值是否满足该键值了呀
至于你说的100M空间 我觉得如果在一个比较大的系统里 100M的索引应该也还好吧
呵呵 我没接触过太大的系统 所以也不能很准确的回答你
不过一般来说索引通常都是会增加数据库运行性能的
[/Quote]
wh62592855
2010-01-11
打赏
举报
回复
你这么来计算大体上来讲应该没没错 当然 这只是我个人看法哦
有两个地方需要指出
1
一个rowid不会只占1位的
2
在你的说法中 说一个键值占2*1.2M 这里为什么要乘2呢
1位的话可以为0或者为1 就足以代表该位的值是否满足该键值了呀
至于你说的100M空间 我觉得如果在一个比较大的系统里 100M的索引应该也还好吧
呵呵 我没接触过太大的系统 所以也不能很准确的回答你
不过一般来说索引通常都是会增加数据库运行性能的
shunan
2010-01-11
打赏
举报
回复
[Quote=引用 1 楼 wh62592855 的回复:]
就是你所想的那个样子 囊括了整张表每一行的rowid
其实并不浪费空间 只是一个"位"而已呀 并没有把整行数据存进去
起始ROWID:为位图的起始地址,即位图中第一行的ROWID。包括相对文件号,在相对文件中的块号,和块中的行号。
终止ROWID:为位图的终止地址,即位图中最后一行的ROWID。也包括相对文件号,在相对文件中的块号,和块中的行号。
[/Quote]
谢谢。
那么位图索引段所占的空间我能否如此大概估算,以1个1000万记录的表为例,就有1000万个rowid,一个rowid为1位,则有10000000/8/1024/1024=1.2Mb,也就是说每一个键值至少包含了2*1.2M的空间,假设有50个键值,那就100多兆,这个空间占用不可观吗?oracle需要把索引载到存储区中吧,这个对存储区的要求不是高了阿。不知大牛对索引段所占空间,对数据库运行的影响等,是如何理解的?请不吝指点一二。感谢!
wh62592855
2010-01-06
打赏
举报
回复
怎么我几天没来你就多了两朵大红花和一个小红星
羡慕ing ~
呵呵
crazylaa
2010-01-06
打赏
举报
回复
[Quote=引用 1 楼 wh62592855 的回复:]
就是你所想的那个样子 囊括了整张表每一行的rowid
其实并不浪费空间 只是一个"位"而已呀 并没有把整行数据存进去
起始ROWID:为位图的起始地址,即位图中第一行的ROWID。包括相对文件号,在相对文件中的块号,和块中的行号。
终止ROWID:为位图的终止地址,即位图中最后一行的ROWID。也包括相对文件号,在相对文件中的块号,和块中的行号。
[/Quote]
学习
wh62592855
2010-01-06
打赏
举报
回复
就是你所想的那个样子 囊括了整张表每一行的rowid
其实并不浪费空间 只是一个"位"而已呀 并没有把整行数据存进去
起始ROWID:为位图的起始地址,即位图中第一行的ROWID。包括相对文件号,在相对文件中的块号,和块中的行号。
终止ROWID:为位图的终止地址,即位图中最后一行的ROWID。也包括相对文件号,在相对文件中的块号,和块中的行号。
位图索引
结构
http://www.itpub.net/attachment.php?aid=401867#
B树索引和
位图索引
的
结构
介绍
一 前言: •ROWID:包含键值的行的行ID,(查找块的最快方法,类似于门牌号) •因为所有行属于同一个段,所以要使用受限的ROWID指向表行 索引是数据库为了提高查询效率提供的一种冗余
结构
,保守计算数据库50%以上的调优可以通过调整索引来进行优化; 二 索引在
结构
上的类别可划分如下:B树索引、
位图索引
、散列索引、反转索引等 三 索引的介绍: 1、B树索引(BTREE ...
mysql 存储位图_查看
位图索引
存储
结构
环境:OS:Red Hat Linux As 5DB:10.2.0.4
位图索引
跟普通索引不同之处是,
位图索引
的每个键值里记录了启始rowid和结束rowid,下面可以通过dump索引
结构
可以查看.1.建表并创建bitmap索引Create Table tb_bitmap_test(Id Number,Name Varchar2(20),type Varchar2(2));DeclareBegin...
数据
结构
应用:
位图索引
一、案例分析如想查出所有已婚的女性,转换成sql为:select * from t where t.gender = ‘female’ and maritalstatus = ‘已婚’; 1、不使用任何索引,就会全表扫描 2、使用索引: 1)B+Tree/BTree索引,都是使用多叉树的形式,因为性别和婚姻状况基本都占50%数据,基本要取出一半数据,要扫描多次BTree,所以完全没有必要;若是列重复值少,且基数大,可以考虑使用BTree索引 2)
位图索引
类似于BitMap,生成只包含0和1的数组,比如ma
基础和管理
17,377
社区成员
95,112
社区内容
发帖
与我相关
我的任务
基础和管理
Oracle 基础和管理
复制链接
扫一扫
分享
社区描述
Oracle 基础和管理
社区管理员
加入社区
获取链接或二维码
近7日
近30日
至今
加载中
查看更多榜单
社区公告
暂无公告
试试用AI创作助手写篇文章吧
+ 用AI写文章