Welcome 微信登录

首页 / 数据库 / MySQL / Oracle中bitmap索引问题

1.什么是位图索引在索引段中只需存储键的值,而无需存储rowid。在位图索引中每个位(bit)相当于可能存在这个键值得一行。2.创建位图索引的好处一:能节省存储索引的空间,传统的B*Tree会占用大量的存储空间,有时候可能比表多要大的多3.建立位图索引的缺点因为一个位图索引上得键值,可能指向多行记录,所以更新一行的时候,同时会吧位图索引指向的所有行都给锁定了,大大的降低了并发性。4.位图索引如何在查询中工作查询的where子句中的and和or条件直接对位图(bitmap)进行布尔运算,得到一个位图结果集,而无需将位图结果集转换为rowid,如果布尔运算后的结果集比较小,那么查询就能迅速的得要结果,而不需要进行全表扫描。5.位图索引例子:先创建一个表create table t(id int primary key,name varchar2(10),p_flag varchar2(1));我们在p_flag上创建一个位图索引create table t(id int primary key,name varchar2(10),p_flag varchar2(1));插入数据insert into t values(1,"hua","N");insert into t values(3,"huang","Y");
insert into t values(2,"zhang","N");我们尝试在一个session1中修改id为1,p_flag为N的行update t set p_flag = "Y" where id = 1;这时我们并不着急commit,在另外一个session2中尝试修改id为2,的记录update t set p_flag = "Y" where id = 2;我们发现session2被阻塞了。。不应该啊,因为Oracle只有在两个session同时修改同一条记录才会阻塞啊,那这时候为什么又阻塞了呢?答案是位图索引在作怪!!这个例子说明位图索引,最后还是用在哪些经常要查询,但是很少修改的记录很大的表上,同时应该在低基数的列上建立位图索引(低基数是指:想对于表数据来说,每个列上得不同数据很少,比如性别只有两个不同值(男,女),但是性别这列所在的表中,可能有很多很数据)。Oracle commit的时候发生了什么Oracle中关于bitmap index的使用问题相关资讯      Oracle数据库  Oracle入门教程  oracle数据库教程 
  • Oracle数据库全球化  (03月01日)
  • Oracle数据库日期过滤方法性能比较  (02/02/2015 13:20:26)
  • Oracle数据库安装中端口被占用问题  (10/29/2014 07:42:24)
  • 在CentOS 6.6上搭建C++运行环境并  (10/10/2015 19:44:40)
  • Oracle数据库无法使用localhost和  (11/14/2014 16:39:10)
  • 使用SQLT来构建Oracle测试用例  (08/28/2014 06:17:41)
本文评论 查看全部评论 (0)
表情: 姓名: 字数