oracle之bitmap索引

oracle常见的索引是BTree索引和Bitmap索引。

BTree索引特点:

默认索引

适合大量增删改查

不能用or操作符

适合高基数的列(即唯一值多)

创建sql:create index lie_idx1 on table(liename);

Bitmap索引特点:

做update代价非常高

非常适合or操作符

基数少的列(即重复值多)

创建sql:create bitmap index lie_bit_idx1 on table(liename);

Bitmap索引使用配注:

  对列做位图索引(Bitmap),该列必须是不常改动的。因为oracle在查询位图索引时,会将查找的某一重复值都锁定,在一个sql未提交前,其他用户操作拥有该重复值的sql会处于阻塞状态,直至第一个sql被提交。

创建索引的一些规则:

1、权衡索引和DML之间的关系。执行DML语句会修改索引

2、把索引和表数据放在不同的表空间。读取表数据时可以并行读取索引【移动索引:alter index indexname rebuild tablespace】

索引的常用操作:

重新创建索引:alter index indexname rebuild tablespace indexname2;  数据库操作删除命令后,索引记录并不会马上清除

在线重建索引:alter index indexname rebuild online;

整合索引:alter index indexname coalesce;  用于整理索引碎片

删除索引:drop index scott.indexname;

分析索引:

  1、查询存放分析数据的表:select count(*) from index_status;

  2、执行分析索引命令:analyze index indexname validate structrue;   --分析完该索引信息会存于index_status表中。

原文地址:https://www.cnblogs.com/x-jingxin/p/8684804.html

时间: 2024-11-13 08:05:18

oracle之bitmap索引的相关文章

Oracle序列和索引

序列和索引 一.序列 1.序列的概念: 序列(Sequence)是用来生成连续的整数数据的对象.它常常用来作为主键的增长列,可以升序,也可以降序. 2.创建序列: 语法:创建序列                                              语法解析: CREATE SEQUENCE sequence_name [STRAT WITH num] START WITH:从某一个整数开始,升序默认为1,降序默认为-1. [INCREMENT BY increment] I

Oracle中的索引详解

Oracle中的索引概述 索引与表一样,也属于段(segment)的一种.里面存放了用户的数据,跟表一样需要占用磁盘空间.索引是一种允许直接访问数据表中某一数据行的树型结构,为了提高查询效率而引入,是一个独立于表的对象,可以存放在与表不同的表空间中.索引记录中存有索引关键字和指向表中数据的指针(地址).对索引进行的I/O操作比对表进行操作要少很多.索引一旦被建立就将被Oracle系统自动维护,查询语句中不用指定使用哪个索引. 从物理上说,索引通常可以分为:分区和非分区索引.常规B树索引.位图(b

Oracle中B-TREE索引的深入理解(转载)

索引概述 索引与表一样,也属于段(segment)的一种.里面存放了用户的数据,跟表一样需要占用磁盘空间.只不过,在索引里的数据存放形式与表里的数据存放形式非常的不一样.在理解索引时,可以想象一本书,其中书的内容就相当于表里的数据,而书前面的目录就相当于该表的索引.同时,通常情况下,索引所占用的磁盘空间要比表要小的多,其主要作用是为了加快对数据的搜索速度,也可以用来保证数据的唯一性.但是,索引作为一种可选的数据结构,你可以选择为某个表里的创建索引,也可以不创建.这是因为一旦创建了索引,就意味着o

ORACLE Index Lookup索引访问路径总结

在ORACLE中,索引访问/查找(Index Lookup)路径有五种方式,分别为INDEX UNIQUE SCAN.INDEX RANGE SCAN.INDEX FULL SCAN.INDEX FAST FULL SCAN .INDEX SKIP SCAN.下面通过一些案例介绍.总结一下这五种索引访问路径.本文是总结这方面的知识点,所以文中一些地方参考.引用了参考资料中的部分内容.详细.具体资料可以参考官方资料Index Scans 索引唯一扫描(INDEX UNIQUE SCAN)   索引

Oracle中的索引

Oracle中的索引 在关系数据库中,索引是一种与表有关的数据库结构,它是除表以外的另一个重要模式对象.索引是建立在表的一列或多个列上的辅助对象,目的是提高表中数据的访问速度. 索引时表示数据的另一种方式,它提供的数据顺序不同于数据在磁盘上的物理存储顺序.它重新排列数据的物理位置,使其值为有序键值列表,每个键值是指向表行的指针,故其排列方式使其搜索变得更加有效. 如果表中定义了主键约束,而主键列上不存在索引,则Oracle自动创建一个. Oracle中常用的索引类型有:B树索引.反向键索引.位图

Oracle中组合索引的使用详解(转)

在Oracle中可以创建组合索引,即同时包含两个或两个以上列的索引.在组合索引的使用方面,Oracle有以下特点: 1. 当使用基于规则的优化器(RBO)时,只有当组合索引的前导列出现在SQL语句的where子句中时,才会使用到该索引: 2. 在使用Oracle9i之前的基于成本的优化器(CBO)时, 只有当组合索引的前导列出现在SQL语句的where子句中时,才可能会使用到该索引,这取决于优化器计算的使用索引的成本和使用全表扫描的成本,Oracle会自动选择成本低的访问路径(请见下面的测试1和

查看oracle中表的索引

查看oracle中表的索引 oracle中表的索引信息存在 user_indexes 和 user_ind_columns 两张表里面,其中 user_indexes 系统视图存放是索引的名称以及该索引是否是唯一索引等信息, user_ind_columns 统视图存放的是索引名称,对应的表和列等 sql示例: select* from all_indexes where table_name='ACM_NETWORK_OPERATION'; select * from user_ind_col

Oracle中的索引详解(转载)

一. ROWID的概念 存储了row在数据文件中的具体位置:64位 编码的数据,A-Z, a-z, 0-9, +, 和 /, row在数据块中的存储方式 SELECT ROWID, last_name FROM hr.employees WHERE department_id = 20; 比 如:OOOOOOFFFBBBBBBRRR OOOOOO:data object number, 对应dba_objects.data_object_id FFF:file#, 对应v$datafile.fi

[转]Oracle中的索引详解

原文地址:http://www.oschina.net/question/30362_4057 一. ROWID的概念 存储了row在数据文件中的具体位置:64位 编码的数据,A-Z, a-z, 0-9, +, 和 /, row在数据块中的存储方式 SELECT ROWID, last_name FROM hr.employees WHERE department_id = 20; 比 如:OOOOOOFFFBBBBBBRRR OOOOOO:data object number, 对应dba_o