首页 数据库 mysql教程 Oracle中bitmap索引问题

Oracle中bitmap索引问题

Jun 07, 2016 pm 05:06 PM
oracle数据库

Oracle中bitmap索引问题,查询的where子句中的and和or条件直接对位图(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同时修改同一条记录才会阻塞啊,那这时候为什么又阻塞了呢?答案是位图索引在作怪!!

这个例子说明位图索引,最后还是用在哪些经常要查询,但是很少修改的记录很大的表上,同时应该在低基数的列上建立位图索引(低基数是指:想对于表数据来说,每个列上得不同数据很少,比如性别只有两个不同值(男,女),但是性别这列所在的表中,可能有很多很数据)。

linux

本站声明
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系admin@php.cn

热AI工具

Undresser.AI Undress

Undresser.AI Undress

人工智能驱动的应用程序,用于创建逼真的裸体照片

AI Clothes Remover

AI Clothes Remover

用于从照片中去除衣服的在线人工智能工具。

Undress AI Tool

Undress AI Tool

免费脱衣服图片

Clothoff.io

Clothoff.io

AI脱衣机

AI Hentai Generator

AI Hentai Generator

免费生成ai无尽的。

热门文章

R.E.P.O.能量晶体解释及其做什么(黄色晶体)
3 周前 By 尊渡假赌尊渡假赌尊渡假赌
R.E.P.O.最佳图形设置
3 周前 By 尊渡假赌尊渡假赌尊渡假赌
R.E.P.O.如果您听不到任何人,如何修复音频
3 周前 By 尊渡假赌尊渡假赌尊渡假赌
WWE 2K25:如何解锁Myrise中的所有内容
3 周前 By 尊渡假赌尊渡假赌尊渡假赌

热工具

记事本++7.3.1

记事本++7.3.1

好用且免费的代码编辑器

SublimeText3汉化版

SublimeText3汉化版

中文版,非常好用

禅工作室 13.0.1

禅工作室 13.0.1

功能强大的PHP集成开发环境

Dreamweaver CS6

Dreamweaver CS6

视觉化网页开发工具

SublimeText3 Mac版

SublimeText3 Mac版

神级代码编辑软件(SublimeText3)

oracle怎么查看表属于哪个表空间 oracle怎么查看表属于哪个表空间 Jul 06, 2023 pm 01:31 PM

oracle查看表属于哪个表空间的方法:1、使用“SELECT”语句,并通过指定表名来查找指定表所属的表空间;2、使用Oracle提供的数据库管理工具来查看表所属的表空间,这些工具通常提供了图形界面,使得操作更加直观和方便;3、在SQL*Plus中,可以通过输入“DESCRIBEyour_table_name;”命令来查看表所属的表空间。

如何使用PDO连接到Oracle数据库 如何使用PDO连接到Oracle数据库 Jul 28, 2023 pm 12:48 PM

如何使用PDO连接到Oracle数据库概述:PDO(PHPDataObjects)是PHP中一个操作数据库的扩展库,它提供了一个统一的API来访问多种类型的数据库。在本文中,我们将讨论如何使用PDO连接到Oracle数据库,并执行一些常见的数据库操作。步骤:安装Oracle数据库驱动扩展在使用PDO连接Oracle数据库之前,我们需要安装相应的Oracl

oracle如何只取一条重复的数据 oracle如何只取一条重复的数据 Jul 06, 2023 am 11:45 AM

oracle只取一条重复的数据的步骤:1、使用SELECT语句结合GROUP BY和HAVING子句来查找重复数据;2、使用ROWID删除重复数据,可以确保删除的是精确的重复数据记录,或者使用“ROW_NUMBER()”函数删除重复数据,这将删除每组重复数据中的除了第一条记录之外的其他记录;3、使用“select count(*) from”语句返回删除记录数确保结果。

实现PHP和Oracle数据库的数据导入 实现PHP和Oracle数据库的数据导入 Jul 12, 2023 pm 06:46 PM

实现PHP和Oracle数据库的数据导入在Web开发中,使用PHP作为服务器端脚本语言可以方便地操作数据库。Oracle数据库作为一种常见的关系型数据库管理系统,具备强大的数据存储和处理能力。本文将介绍如何使用PHP将数据导入到Oracle数据库中,并给出相应的代码示例。首先,我们需要确保已经安装了PHP和Oracle数据库,并且已经配置好了PHP对Orac

如何高效地使用PHP和Oracle数据库的连接池 如何高效地使用PHP和Oracle数据库的连接池 Jul 12, 2023 am 10:07 AM

如何高效地使用PHP和Oracle数据库的连接池引言:在开发PHP应用程序时,使用数据库是必不可少的一部分。而在与Oracle数据库交互时,连接池的使用对于提高应用程序的性能和效率至关重要。本文将介绍如何在PHP中高效地使用Oracle数据库连接池,并提供相应的代码示例。一、连接池的概念及优势连接池是一种管理数据库连接的技术,它通过事先创建一批连接并维护一个

oracle数据库需要jdk吗 oracle数据库需要jdk吗 Jun 05, 2023 pm 05:06 PM

oracle数据库需要jdk,其原因是:1、当使用特定的软件或功能时需要包含在JDK中的其他软件或库;2、需要安装Java JDK才能在Oracle数据库中运行Java程序;3、JDK提供了开发和编译Java应用程序的功能;4、满足Oracle对Java函数的要求,以帮助实现和实现特定功能。

如何使用php扩展PDO连接Oracle数据库 如何使用php扩展PDO连接Oracle数据库 Jul 29, 2023 pm 07:21 PM

如何使用PHP扩展PDO连接Oracle数据库导语:PHP是一种非常流行的服务器端编程语言,而Oracle是一款常用的关系型数据库管理系统。本文将介绍如何使用PHP扩展PDO(PHPDataObjects)来连接Oracle数据库。一、安装PDO_OCI扩展要连接Oracle数据库,首先需要安装PDO_OCI扩展。以下是安装PDO_OCI扩展的步骤:确保

oracle如何查询表空间大小 oracle如何查询表空间大小 Jul 06, 2023 pm 01:45 PM

oracle查询表空间大小步骤:1、使用数据库管理员账号登录到Oracle数据库;2、使用“SELECT”语句来查看空间列表;3、查询表空间大小有3种方法:使用dbms_utility包查询、使用dba_segments视图查询、使用dba_data_files视图查询;4、使用“DBMS_OUTPUT.PUT_LINE”函数或者其他显示结果的方法来显示查询结果。

See all articles