Oracle B*tree索引和Oracle Bitmap索引有什么区别

(1) 建立B*tree索引

3:11:08 SQL>create index emp1_job_ind on emp1(job);

(2)分析索引结构

3:11:08 SQL> ANALYZE INDEX EMP1_JOB_IND VALIDATE STRUCTURE;

Index analyzed.

(3)查看索引存储信息

03:11:41 SQL> SELECT BLEVEL,LEAF_BLOCKS,NUM_ROWS FROM USER_INDEXES

03:12:12   2   WHERE INDEX_NAME='EMP1_JOB_IND';

BLEVEL LEAF_BLOCKS   NUM_ROWS

---------- ----------- ----------

0           1         14

03:12:26 SQL> INSERT INTO EMP1 SELECT * FROM EMP1;

---------自我复制建立多行记录。

03:12:26 SQL> ANALYZE TABLE EMP1 COMPUTE STATISTICS;

Table analyzed.

03:13:01 SQL>  SELECT BLEVEL,LEAF_BLOCKS,NUM_ROWS FROM USER_INDEXES

03:13:07   2  WHERE INDEX_NAME='EMP1_JOB_IND';

BLEVEL LEAF_BLOCKS   NUM_ROWS

---------- ----------- ----------

1         118      28672

(4)建立bitmap 索引

03:34:52 SQL> drop index emp1_job_ind ;

03:34:52 SQL> create bitmap index emp1_job on emp1(job);

(5)分析索引结构

03:34:52 SQL> ANALYZE TABLE EMP1 COMPUTE STATISTICS;

Table analyzed.

03:13:01 SQL>  SELECT BLEVEL,LEAF_BLOCKS,NUM_ROWS FROM USER_INDEXES

03:13:07   2  WHERE INDEX_NAME='EMP1_JOB_IND';

BLEVEL LEAF_BLOCKS   NUM_ROWS

---------- ----------- ----------

1        16      10

在重复值非常多的列上建立bitmap索引比B*tree索引更有优势。

查看本栏目更多精彩内容:http://www.bianceng.cnhttp://www.bianceng.cn/database/Oracle/

时间: 2024-08-29 14:44:07

Oracle B*tree索引和Oracle Bitmap索引有什么区别的相关文章

Oracle B-tree、位图、全文索引三大索引性能比较及优缺点汇总(引用)

转自帖:http://www.itpub.net/thread-1700144-1-1.html 引言:大家都知道"效率"是数据库中非常重要的一个指标,如何提高效率大家可能都会想起索引,但索引又这么多种,什么场合应该使用什么索引呢?哪种索引可以提高我们的效率,哪种索引可以让我们的效率大大降低(有时还不如全表扫描性能好)下面要讲的"索引"如何成为我们的利器而不是灾难!多说一点,由于不同索引的存储结构不同,所以应用在不同组织结构的数据上,本篇文章重点就是:理解不同的技术

索引在ORACLE数据库中的应用分析

oracle|数据|数据库|索引 索引在数据库中的应用分析     索引是提高数据查询最有效的方法,也是最难全面掌握的技术,因为正确的索引可能使效率提高10000倍,而无效的索引可能是浪费了数据库空间,甚至大大降低查询性能.   索引的管理成本 1.  存储索引的磁盘空间 2.  执行数据修改操作(INSERT.UPDATE.DELETE)产生的索引维护 3.  在数据处理时回需额外的回退空间.   实际数据修改测试: 一个表有字段A.B.C,同时进行插入10000行记录测试 在没有建索引时平均

Oracle中一个通过添加本地分区索引提高SQL性能的案例

今天接到同事求助,说有一个select query,在Oracle上要跑一分多钟,他希望能在5s内 出结果,该sql如下: Select /*+ parallel(src, 8) */ distinct src.systemname as systemname , src.databasename as databasename , src.tablename as tablename , src.username as username from <strong>meta_dbql_tabl

***oracle点知识3——数据段和索引段管理

在Oracle数据库中,段往往被用来存储特定逻辑对象的所有数据.如当建立数据库表或者索引时,Oracle就会为这些对象分配存储空间,以存放他们所需要的信息.段是由一个或者多个区组成的.不要看段是Oracle数据库中一个不起眼的角色,其实,在其中,仍然隐藏着许多不为人知的管理技巧.若数据库管理员能够掌握这些内容,或许,其工作会变得轻松许多. 技巧一:对大表执行分区段. 表分区段用于存储分区表中某个分区的数据.如把某一个表分为几个区,每个区就对应一个表分区段.这么设置是可行的.因为根据段管理规则,在

oracle中,索引数据定位和索引扫描有什么区别?

问题描述 oracle中,索引数据定位和索引扫描有什么区别? oracle中,索引数据定位和索引扫描有什么区别? 是不是就是简单的扫描就是要扫完,定位只要查到就可以了? 解决方案 oracle索引扫描索引扫描高手闲谈Oracle索引扫描 解决方案二: http://blog.sina.com.cn/s/blog_54eeb5d90100q9zu.html 解决方案三: 索引数据定位和索引扫描 你说的应该是索引数据定位和全表扫描吧?如果用到索引的话,没必要进行扫描,可以通过二分法快速定位

Oracle 9i轻松取得建表和索引的DDL语句_oracle

正在看的ORACLE教程是:Oracle 9i轻松取得建表和索引的DDL语句.我们都知道在9i之前,要想获得建表和索引的语句是一件很麻烦的事.我们通常的做法都是通过export with rows=no来得到,但它的输出因为格式的问题并不能直接拿来用.而另一种方法就是写复杂的脚本来查询数据字典,但这对于一稍微复杂的对象,如IOT和嵌套表等,还是无法查到. 从数据字典中获得DDL语句是经常要用的,特别是在系统升级/重建的时候.在Oracle 9i中,我们可以直接通过执行dbms_metadata从

索引在Oracle中的应用深入分析_oracle

索引是提高数据查询最有效的方法,也是最难全面掌握的技术,因为正确的索引可能使效率提高10000倍,而无效的索引可能是浪费了数据库空间,甚至大大降低查询性能. 一.索引的管理成本1. 存储索引的磁盘空间2. 执行数据修改操作(INSERT.UPDATE.DELETE)产生的索引维护3. 在数据处理时所需额外的回退空间. 二.实际数据修改测试:一个表有字段A.B.C,同时进行插入10000行记录测试在没有建索引时平均完成时间是2.9秒在对A字段建索引后平均完成时间是6.7秒在对A字段和B字段建索引后

Oracle之虚拟列及虚拟列索引

Oracle之虚拟列及虚拟列索引 1. 为什么要使用虚拟列        (1)可以为虚拟列创建索引(oracle为其创建function index)        (2)可以搜集虚拟列的统计信息statistics,为CBO提供一定的采样分析.       (3)可以在where 后面使用虚拟列作为选择条件       (4)只在一处定义,不存储多余数据,查询是动态生成. 2. 语法 [sql] view plain copy  HR@bear> create table inv(   2 

【索引】Oracle之不可见索引和虚拟索引的比对

[索引]Oracle之不可见索引和虚拟索引的比对    Oracle之不可见索引 :http://blog.itpub.net/26736162/viewspace-2124044/ Oracle之虚拟索引 :  http://blog.itpub.net/26736162/viewspace-2123687/   之前给大家分享过不可见索引和虚拟索引,今天给大家分享的是Oracle之不可见索引和虚拟索引的比对.   比较项目 不可见索引(Invisible Indexes) 虚拟索引(Virt