社区
Oracle 高级技术
帖子详情
位图索引与 B-tree 索引:选择与时间 进来解释一下
microns
2008-11-02 05:06:33
今天看了oracle B-TREE和bitmap索引,在网上查了资料
http://www.oracle.com/technology/global/cn/pub/articles/sharma_indexes.html
oracle官方解释
但是还是没有怎么明白
我自己的理解是,有序表的话使用b-tree索引要好些,无序的表使用bitmap要好些
但是这种理解,感觉很肤浅,望高人指点,谢谢
...全文
741
15
打赏
收藏
位图索引与 B-tree 索引:选择与时间 进来解释一下
今天看了oracle B-TREE和bitmap索引,在网上查了资料http://www.oracle.com/technology/global/cn/pub/articles/sharma_indexes.htmloracle官方解释 但是还是没有怎么明白 我自己的理解是,有序表的话使用b-tree索引要好些,无序的表使用bitmap要好些 但是这种理解,感觉很肤浅,望高人指点,谢谢
复制链接
扫一扫
分享
转发到动态
举报
写回复
配置赞助广告
用AI写文章
15 条
回复
切换为时间正序
请发表友善的回复…
发表回复
打赏红包
liuyi8903
2008-11-03
打赏
举报
回复
这与算法有关系,bitmap本身就是选择性比较低的列比较使用,如性别,
但在oltp中,频繁的更新操作会导致大量的enqueue events出现.
而且是btree,则是选择性越高越好,如在sequence上面的b-tree(当然该索引上的块竞争是另外一回事)
vc555
2008-11-02
打赏
举报
回复
[Quote=引用 12 楼 microns 的回复:]
书上下的结论:
b-tree索引可能更适合于OLTP系统,因为在OLTP系统中DML的操作比较频繁。
bitmap索引更适合于Data Warehouse系统,因为在Data Warehouse系统中表一般都比较大但是静态的并且查询较为复杂
[/Quote]
和我结论一样。
:D
vc555
2008-11-02
打赏
举报
回复
[Quote=引用 11 楼 microns 的回复:]
我查阅了相关书籍,有句话这样说的,望高手帮我理解一下,谢谢
在位图索引中修改键值列需要使用段一级的锁,而B-TREE索引使用的是行一级的锁
[/Quote]
3L不是都给你解释过了吗?这里的“段一级”,就是指表段。
microns
2008-11-02
打赏
举报
回复
书上下的结论:
b-tree索引可能更适合于OLTP系统,因为在OLTP系统中DML的操作比较频繁。
bitmap索引更适合于Data Warehouse系统,因为在Data Warehouse系统中表一般都比较大但是静态的并且查询较为复杂
microns
2008-11-02
打赏
举报
回复
我查阅了相关书籍,有句话这样说的,望高手帮我理解一下,谢谢
在位图索引中修改键值列需要使用段一级的锁,而B-TREE索引使用的是行一级的锁
vc555
2008-11-02
打赏
举报
回复
位图索引没用过。
这东西只在OLAP或者数据仓库中用,或者你的表只读也行。
有DML操作的表一般都不会用位图索引的。带来的后果会非常严重。
BlueskyWide
2008-11-02
打赏
举报
回复
Vivek Sharma是Oracle认证专家,擅长于性能调整和SQL-PL/SQL 优化。
看来,性能优化的一切都来自于测试!
敬佩此等高手!
贴引:
1.位图索引,它使用索引来响应该查询。
B-tree 索引,优化程序选择了全表扫描;
2.位图索引也可以索引空值(与 B-tree 索引不同)。
3.DSS 系统中的位图索引支持即席查询;
B-tree 索引不支持即席查询。
4.B-tree 索引更适合于 OLTP 应用程序;
使用位图索引,优化程序可以有效地响应包括 AND、OR 或 XOR 的查询;
5.对于 B-tree 索引,它会考虑群集因子的值;
使用位图索引生成执行计划时,该优化程序不考虑群集因子的值。
"有序表的话使用b-tree索引要好些,无序的表使用bitmap要好些。" --楼主的理解看来是正确的。
xiaodong_1567
2008-11-02
打赏
举报
回复
[Quote=引用 7 楼 BlueskyWide 的回复:]
楼主的这个贴子不错啊,才看到:
很清楚在此表中,B-tree 索引比 EMPNO 列上的位图索引更小...
[/Quote]
一个存储具体值一个用bit表示当然少得多
BlueskyWide
2008-11-02
打赏
举报
回复
楼主的这个贴子不错啊,才看到:
很清楚在此表中,B-tree 索引比 EMPNO 列上的位图索引更小...
[Quote=引用楼主 microns 的帖子:]
今天看了oracle B-TREE和bitmap索引,在网上查了资料http://www.oracle.com/technology/global/cn/pub/articles/sharma_indexes.htmloracle官方解释
但是还是没有怎么明白
我自己的理解是,有序表的话使用b-tree索引要好些,无序的表使用bitmap要好些
但是这种理解,感觉很肤浅,望高人指点,谢谢
[/Quote]
tianyazifan
2008-11-02
打赏
举报
回复
谢谢分享。请问如何建立位图索引?我还是baidu一下吧。
xiaodong_1567
2008-11-02
打赏
举报
回复
[Quote=引用 4 楼 microns 的回复:]
那如果使用bitmap,岂不是很差,一个用户修改一条信息,他把相同的记录都锁住了?
[/Quote]
所以只有重复性高,且不大更改的才适合
microns
2008-11-02
打赏
举报
回复
那如果使用bitmap,岂不是很差,一个用户修改一条信息,他把相同的记录都锁住了?
xiaodong_1567
2008-11-02
打赏
举报
回复
[Quote=引用 2 楼 microns 的回复:]
引用 1 楼 xiaodong_1567 的回复:
bitmap适合字段值基本是重复的,如性别:男和女
但要注意bitmap对于并发操作时,改一条会锁了很多记录,因为在一个索引集上
不知lz明白不
改一条会锁了很多记录,没有明白
[/Quote]
举例 字段A值为
男
男
女
男
女
那么每个bitmap索引会有5位
男的条目 11010
女的条目 00101
因为所有的记录在一个都在索引条目上,所以修改或增加时会一起锁定
microns
2008-11-02
打赏
举报
回复
[Quote=引用 1 楼 xiaodong_1567 的回复:]
bitmap适合字段值基本是重复的,如性别:男和女
但要注意bitmap对于并发操作时,改一条会锁了很多记录,因为在一个索引集上
不知lz明白不
[/Quote]
改一条会锁了很多记录,没有明白
xiaodong_1567
2008-11-02
打赏
举报
回复
bitmap适合字段值基本是重复的,如性别:男和女
但要注意bitmap对于并发操作时,改一条会锁了很多记录,因为在一个索引集上
不知lz明白不
位图
索引
与
B-tree
索引
:
选择
与
时间
NULL 博文链接:https://wlh269.iteye.com/blog/747555
bitmap
索引
和
B-tree
索引
在使用中如何
选择
在 GENDER 列适当地带一个 bitmap
索引
,在 SAL 列上创建另外一个
位图
索引
,然后执行一些查询。在这些列上,用
B-tree
索引
重新执行查询。 从 TEST_NORMAL 表,查询工资为如下的男员工: 1000 1500 2000 2500 3000 ...
Windows游戏编程系列之1:GUI窗口界面编程及游戏入门实战
位图简介 38 1)在资源中添加位图资源 39 2)从资源中加载位图: LoadBitmap 39 3)创建一个与当前DC相匹配的DC(内存DC) 39 4)将bitmap放入匹配的DC中:SelectObject 40 5)成像(1:1 比例 ) 40 6)取出位图 40...
Oracle
索引
(B*tree与Bitmap)的学习总结
在Oracle中,
索引
基本分为以下几种:B*Tree
索引
,反向
索引
,降序
索引
,
位图
索引
,函数
索引
,interMedia全文
索引
等,其中最常用的是B*Tree
索引
和Bitmap
索引
。(1)、与
索引
相关视图查询DBA_INDEXES视图可得到表中所有...
数据库
索引
技术ppt
文件记录的组织方式
索引
技术基础 B+树
索引
散列
索引
位图
索引
多维空间
索引
Grid file, R-tree, kd-tree, quadtree, Space Filling Curve
Oracle 高级技术
3,490
社区成员
18,714
社区内容
发帖
与我相关
我的任务
Oracle 高级技术
Oracle 高级技术相关讨论专区
复制链接
扫一扫
分享
社区描述
Oracle 高级技术相关讨论专区
社区管理员
加入社区
获取链接或二维码
近7日
近30日
至今
加载中
查看更多榜单
社区公告
暂无公告
试试用AI创作助手写篇文章吧
+ 用AI写文章