位图索引与b-tree 索引

位图索引与b-tree 索引

ID:34010580

大小:128.00 KB

页数:22页

时间:2019-03-03

位图索引与b-tree 索引_第1页
位图索引与b-tree 索引_第2页
位图索引与b-tree 索引_第3页
位图索引与b-tree 索引_第4页
位图索引与b-tree 索引_第5页
资源描述:

《位图索引与b-tree 索引》由会员上传分享,免费在线阅读,更多相关内容在行业资料-天天文库

1、DBA:性能与可用性位图索引与B-tree索引:选择与时间VivekSharma了解每个索引的正确应用对性能会有很大影响。一般认为,位图索引最适合于具有低相异值的列(如GENDER、MARITAL_STATUS和RELATION)。然合,这种观点并不完全正确。实际上,对于那些并不经常由许多并行系统更新其数据的系统来说,总是建议采用位图索引。事实上,正如我此处所阐明的,在具有100%唯一值(主键的列候选键)的列上的位图索引与B-tree索引同样有效。在本文中,我将提供一些示例和优化程序决策,它们对于低基数列和高基数列上的索引

2、类型是通用的。这些示例将帮助DBA了解位图索引的使用实际上并不依赖于基数,而是依赖于应用程序。比较索引在唯一列上使用位图索引(Oracle不建议这种方法)有几个缺点,其中一个对充足空间的需求。然而,位图索引的大小依赖于列的基数,位图索引是在该列上创建,同时进行数据分配。因此,GENDER列上的位图索引将小于相同列上的B-tree索引。相反,EMPNO(主键的候选键)上的位图索引将比此列上的B-tree索引大得多。但是因为访问决策支持系统(DSS)的用户比访问交易处理(OLTP)系统的用户要少,所以资源对于这些应用程序不是问

3、题。为演示这一点,我创建了两个表TEST_NORMAL和TEST_RANDOM。我使用PL/SQL块在TEST_NORMAL表中插入一百万行,然后随机在TEST_RANDOM表中插入这些行:Createtabletest_normal(empnonumber(10),enamevarchar2(30),salnumber(10));BeginForiin1..1000000LoopInsertintotest_normalvalues(i,dbms_random.string('U',30),dbms_random.val

4、ue(1000,7000));Ifmod(i,10000)=0thenCommit;Endif;Endloop;End;/Createtabletest_randomasselect/*+append*/*fromtest_normalorderbydbms_random.random;SQL>selectcount(*)"TotalRows"fromtest_normal;TotalRows----------1000000Elapsed:00:00:01.09SQL>selectcount(distinctempno)

5、"DistinctValues"fromtest_normal;DistinctValues---------------1000000Elapsed:00:00:06.09SQL>selectcount(*)"TotalRows"fromtest_random;TotalRows----------1000000Elapsed:00:00:03.05SQL>selectcount(distinctempno)"DistinctValues"fromtest_random;DistinctValues-----------

6、----1000000Elapsed:00:00:12.07注意TEST_NORMAL是条理的,而TEST_RANDOM表是随机创建的,因此TEST_RANDOM表的数据是无条理的。在上面的表中,列EMPNO包含完全相异的值,是很好的一个候选主键。如果您将此列定为主键,则您将创建一个B-tree索引而非位图索引,因为Oracle不支持位图主键索引。要分析这些索引的行为,我们将执行下列步骤:1.在TEST_NORMAL上:A.在EMPNO列上创建一个位图索引,并使用等式谓词执行某些查询。B.在EMPNO列上创建一个B-tre

7、e索引,使用等式谓词执行某些查询,并比较由查询做出的逻辑和物理输入/输出,以取出不同值集的结果。2.在TEST_RANDOM上:A.与步骤1A相同。B.与步骤1B相同。3.在TEST_NORMAL上:A.与步骤1A相同,除了查询是使用在一定范围的谓词执行之外。B.与步骤1B相同,除了查询是使用一定范围的谓词执行之外。现在比较统计值。4.在TEST_RANDOM上:A.与步骤3A相同。A.与步骤3B相同。2.在TEST_NORMAL上:A.在SAL列上创建一个位图索引,然后使用等式谓词执行某些查询,及使用范围谓词执行某些查询

8、。B.在SAL列上创建一个B-tree索引,然后使用等式谓词执行某些查询,和使用范围谓词(与步骤5A中相同的某些值集)执行某些查询。比较由查询完成的输入/输出以取出结果。3.将GENDER列添加到全部两个表中,并使用三个可能值更新列:M 代表男,F 代表女,null 代表不适用。基于一定条件使用这些值对

当前文档最多预览五页,下载文档查看全文

此文档下载收益归作者所有

当前文档最多预览五页,下载文档查看全文
温馨提示:
1. 部分包含数学公式或PPT动画的文件,查看预览时可能会显示错乱或异常,文件下载后无此问题,请放心下载。
2. 本文档由用户上传,版权归属用户,天天文库负责整理代发布。如果您对本文档版权有争议请及时联系客服。
3. 下载前请仔细阅读文档内容,确认文档内容符合您的需求后进行下载,若出现内容与标题不符可向本站投诉处理。
4. 下载文档时可能由于网络波动等原因无法下载或下载错误,付费完成后未能成功下载的用户请联系客服处理。