《Oracle Concept》第三章 - 12
背景:
按照《Oracle Concept》的结构一起了解Oracle数据库,这是学习Oracle从入门到精通的基础。
前言《Introduction to Oracle Database》的历史文章:
《》
《》
《》
《》
《》
《》
《》
《》
《》
《》
第二章《Tables and Table Clusters》 历史文章:
《》
《》
《》
《》
《》
《》
《》
《》
《》
《》
《》
《》
《》
《》
《》
《》
《》
《》
《》
《》
《》
第三章《Indexes and Index-Organized Tables》历史文章:
《
《
《
《
《
《
《
《
《
《
《
本文主题:第三章《Indexes and Index-Organized Tables》 - Overview of Indexes。
单表位图索引
如下示例展示了对表sh.customers的检索。这张表的一些列上很适合创建位图索引。
SQL> SELECT cust_id, cust_last_name, cust_marital_status, cust_gender2 FROM sh.customers 3 WHERE ROWNUM < 8 ORDER BY cust_id;CUST_ID CUST_LAST_ CUST_MAR C
---------- ---------- -------- -1 Kessel M2 Koch F3 Emmerson M4 Hardy M5 Gowen M6 Charles single F7 Ingram single F7 rows selected.
cust_marital_status和cust_gender列的重复值很少,而cust_id和cust_last_name列的重复值很多。因此cust_marital_status和cust_gender列很适合创建位图索引。如果在其他列上创建位图索引,可能不会有作用。取而代之的是,在这些重复值很高的列上,创建一个唯一的B树索引,可能会更有利于数据的检索性能。
表3-2展示了cust_gender列的位图索引。他包含了两个独立的位图,每个位代表了一个性别。
Table 3-2 位图示例
Value | Row 1 | Row 2 | Row 3 | Row 4 | Row 5 | Row 6 | Row 7 |
---|---|---|---|---|---|---|---|
|
1 |
0 |
1 |
1 |
1 |
0 |
0 |
|
0 |
1 |
0 |
0 |
0 |
1 |
1 |
映射函数会将位图中的每个位转换成customers表的一个rowid。每个位的值依赖于表中相应行的取值。例如,M值的位图含有1作为第一个位,因为在customers表中的第一行性别是M。位图cust_gender='M'将用0作为第2、6和7行的位,因为这些行的值不是M。
注意:
不像B树索引,位图索引能包含那些完全是NULL空值的键。对空值索引对一些SQL语句来说可能会是有用的,例如使用COUNT聚合函数的检索。
一个调查顾客统计趋势的分析员可能会问,“有多少女性顾客是单身或者离异?”这个问题能用如下的SQL检索:
SELECT COUNT(*)
FROM customers
WHERE cust_gender = 'F'
AND cust_marital_status IN ('single', 'divorced');
如同表3-3所示,位图索引能在结果集位图中对值是1的值进行统计来有效地处理这个查询。为了明确哪些顾客满足条件,Oracle会使用结果集位图来访问这张表。
表3-3,位图索引示例
Value | Row 1 | Row 2 | Row 3 | Row 4 | Row 5 | Row 6 | Row 7 |
---|---|---|---|---|---|---|---|
|
1 |
0 |
1 |
1 |
1 |
0 |
0 |
|
0 |
1 |
0 |
0 |
0 |
1 |
1 |
|
0 |
0 |
0 |
0 |
0 |
1 |
1 |
|
0 |
0 |
0 |
0 |
0 |
0 |
0 |
|
0 |
0 |
0 |
0 |
0 |
1 |
1 |
位图索引能有效地合并WHERE条件中不同条件对应的索引。访问表之前,会过滤掉那些只满足部分条件,或者完全不满足条件的行。这个技术通常能显著提升响应时间,毕竟是通过位计算进行的,但是一定要注意位图索引的适用条件。
《Oracle Concept》第三章 - 12相关推荐
- 《Oracle Concept》第二章 - 19
这是杂货铺的第459篇文章 背景: 按照<Oracle Conecpt>的结构一起了解Oracle数据库,这是学习Oracle从入门到精通的基础. 前言<Introduction t ...
- oracle 获取第三行,Oracle 11g 第三章知识点总结——单行函数
Oracle 11g 第三章知识点总结--单行函数 知识点预览 单行函数 单行函数 1. SQL 函数 2.两种 SQL 函数 3.单行函数 a) 操作数句对象 b)接受函数返回一个结果 c)只对一行 ...
- 西安交大梁力上机实验第三章12,从0到180度每隔5度输出该角度的正弦值余弦值
西安交大梁力上机实验第三章12 从0到180度每隔5度输出该角度的正弦值余弦值 ` #include<bits/stdc++.h> using namespace std; int mai ...
- ticktock卖给oracle,ticktock第三章怎么过 ticktock第三章玩家一通关攻略
ticktock第三章怎么过?ticktock是一个冒险逃脱类手游,很多玩家都不知道在ticktock第三章中如何让玩家一成功脱险.下面就是优游网小编为大家带来的ticktock第三章玩家一通关攻略了 ...
- 11G Concept 第三章翻译 Indexes and Index-Organized Tables(索引和索引组织表)
Indexes and Index-Organized Tables(索引及索引组织表) 本章讨论index(索引),它是schema object,它能加快访问行的速度 还讨论了index-orga ...
- Oracle数据库-第三章:单值函数
函数分为: 1.单值函数 1.字符函数 2.日期函数 3.转换函数 4.数字函数 2.分组函数(后面的章节再做学习) 哑表dual dual是一个虚拟表,用来构成select的语法规则,oracle保 ...
- oracle siplugincol表,ORACLE 经常使用的命令工具-第三章:表
第三章:表 T-P*sd:@1t0 1.create a table51Testing软件测试网 i6}2pdjT1Wf 51Testing软件测试网,UPta6i(W/L(w sql> cre ...
- oracle体系三大文件,oracle 体系_第三章控制文件
第三章 控制文件 1.功能特点 记录数据库当前的物理状态 维护数据库的一致性,是一个二进制的小文件 在mount阶段被读取,记录rman备份的元数据 查看database控制文件的位置 Show pa ...
- 【书评:Oracle查询优化改写】第三章
[书评:Oracle查询优化改写]第三章 BLOG文档结构图 一.1 导读 各位技术爱好者,看完本文后,你可以掌握如下的技能,也可以学到一些其它你所不知道的知识,~O(∩_∩)O~: ① 隐含参数 _ ...
最新文章
- wsl(windows上运行linux)安装到非C盘解决方案
- 娱乐化手游营销模式探索
- BUUCTF 特殊的BASE64
- Eclipse中配置Tomcat虚拟路径
- Python之类的继承
- 使用蚂蚁借呗会影响房贷申请吗?
- 485转换器产品功能特点及技术参数介绍
- 高级程序员如何面对职场压力?(2)--受伤的总是我
- Kafka 命令行操作
- 台湾一公司因停电,让员工手写代码...
- 【转载】vim常用命令总结
- Linux运行多个openssl,linux – 使用多选项解释rsa的openssl速度输出
- 四叶草efi_Clover Configurator——四叶草配置引导工具
- IP Scanner Pro for Mac 4.05 局域网IP扫描工具
- 【一年总结】记我的大一生活
- html 登录页面模板
- 2019 计蒜之道 初赛 第一场 A-商汤的AI伴游小精灵
- 【计算机科学】【2017】无组织三维点云的边缘检测
- K均值(kmeans)分类
- 快乐总动员 幸福你我他——龙营华夏第五届届亲子运动会