暂无图片
暂无图片
暂无图片
暂无图片
暂无图片

Oracle 19C 位图索引单个值 (位置等值检查)

原创 Asher.HU 2021-02-04
522


这种类型的访问路径使用位图索引来查找单个键值


8.4.3.1当优化器考虑位图索引单个值时

当谓词包含相等运算符时,优化器将考虑此访问路径。


8.4.3.2位图索引单值如何工作

查询将扫描单个位图以查找包含1值的位置数据库将这些1值转换为rowid,然后使用该rowid查找行。

数据库只需要处理一个位图。例如,下表表示widowedsh.customers.cust_marital_status列中的值的位图索引(分为两个位图)为了满足具有状态的客户查询widowed,数据库可以在位图中搜索每个1widowed并找到相应行的rowid

表8-5位图索引条目

健值在范围内开始Rowid范围内的末端Rowid范围中的第一行范围第二行范围第三行范围第四行范围第五行范围第六行

widowed

AAA ...

CCC ...

0

1个

0

0

0

0

widowed

DDD ...

EEE ...

1个

0

1个

0

1个

1个


8.4.3.3位图索引单个值:示例

在此示例中,优化器选择一个位图索引单值操作来满足使用相等谓词的查询。

查询该sh.customers表将选择所有寡居客户:

SELECT * 
FROM   customers 
WHERE  cust_marital_status = 'Widowed';

下面的计划显示数据库用位图索引中Widowed读取条目customers(步骤3),将1位图中转换为rowid(步骤2),然后使用rowid从customers表中获取行(步骤1)。 ):

SQL_ID  ff5an2xsn086h, child number 0
-------------------------------------
SELECT * FROM customers WHERE cust_marital_status = 'Widowed'
 
Plan hash value: 2579015045
---------------------------------------------------------------------------------------------
|Id| Operation                           | Name                |Rows|Bytes|Cost (%CPU)| Time|
---------------------------------------------------------------------------------------------
| 0| SELECT STATEMENT                    |                     |    |    |412 (100)|        |
| 1|  TABLE ACCESS BY INDEX ROWID BATCHED|CUSTOMERS            |3461|638K|412   (2)|00:00:01|
| 2|   BITMAP CONVERSION TO ROWIDS       |                     |    |    |         |        |
|*3|    BITMAP INDEX SINGLE VALUE        |CUSTOMERS_MARITAL_BIX|    |    |         |        |
---------------------------------------------------------------------------------------------
 
Predicate Information (identified by operation id):
---------------------------------------------------
 
   3 - access("CUST_MARITAL_STATUS"='Widowed')
「喜欢这篇文章,您的关注和赞赏是给作者最好的鼓励」
关注作者
【版权声明】本文为墨天轮用户原创内容,转载时必须标注文章的来源(墨天轮),文章链接,文章作者等基本信息,否则作者和墨天轮有权追究责任。如果您发现墨天轮中有涉嫌抄袭或者侵权的内容,欢迎发送邮件至:contact@modb.pro进行举报,并提供相关证据,一经查实,墨天轮将立刻删除相关内容。

评论