这种类型的访问路径使用位图索引来查找单个键值。
8.4.3.1当优化器考虑位图索引单个值时
当谓词包含相等运算符时,优化器将考虑此访问路径。
8.4.3.2位图索引单值如何工作
查询将扫描单个位图以查找包含1值的位置。数据库将这些1值转换为rowid,然后使用该rowid查找行。
数据库只需要处理一个位图。例如,下表表示widowed该sh.customers.cust_marital_status列中的值的位图索引(分为两个位图)。为了满足具有状态的客户查询widowed,数据库可以在位图中搜索每个1值widowed并找到相应行的rowid。
表8-5位图索引条目
| 健值 | 在范围内开始Rowid | 范围内的末端Rowid | 范围中的第一行 | 范围第二行 | 范围第三行 | 范围第四行 | 范围第五行 | 范围第六行 |
|---|---|---|---|---|---|---|---|---|
|
|
| 0 | 1个 | 0 | 0 | 0 | 0 |
|
|
| 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进行举报,并提供相关证据,一经查实,墨天轮将立刻删除相关内容。




