Oracle中的索引详解

Oracle索引详解 索引是建立在表的一列或多个列上的辅助对象,目的是加快访问表中的数据;Oracle存储索引的也是如此,只不过是;索引由根节点、分支节点和叶子节点组成,包含和确定行实际位置的。 阅读详情

一、 ROWID的概念

存储了row在数据文件中的具体位置:64位 编码的数据,A-Z, a-z, 0-9, +, 和 /,

row在数据块中的存储方式

SELECT ROWID, last_name FROM hr.employees WHERE department_id = 20;

比 如:OOOOOOFFFBBBBBBRRR

OOOOOO:data object number, 对应dba_objects.data_object_id

FFF:file#, 对应v$datafile.file#

BBBBBB:block#

RRR:row#

Dbms_rowid包

SELECT dbms_rowid.rowid_block_number('AAAGFqAABAAAIWEAAA') from dual;

具 体到特定的物理文件

二、 索引的概念

1、 类似书的目录结构

2、 Oracle 的“索引”对象,与表关联的可选对象,提高SQL查询语句的速度

3、 索引直接指向包含所查询值的行的位置,减少磁盘I/O

4、 与所索引的表是相互独立的物理结构

5、 Oracle 自动使用并维护索引,插入、删除、更新表后,自动更新索引

6、 语法:CREATE INDEX index ON table (column[, column]...);

7、 B-tree结构(非bitmap):

[一]了解索引的工作原理:

表:emp

目标:查询Frank的工资salary

建立索 引:create index emp_name_idx on emp(name);

 


[试验]测试索引的作用:

1. 运行/rdbms/admin/utlxplan 脚本

2. 建立测试表

create table t as select * from dba_objects;

insert into t select * from t;

create table indextable

as select rownum id,owner,object_name,subobject_name,

object_id,data_object_id,object_type,created

from t;

3. set autotrace trace explain

4. set timing on

5. 分析表,可以得到cost

6. 查询 object_name=’DBA_INDEXES’

7. 在object_name列上建立索引

8. 再查询

[思考]索引的代价:

插入,更新

三、 唯一索引

1、 何时创建:当某列任意两行的值都不相同

2、 当建立Primary Key(主键)或者Unique constraint(唯一约束)时,唯一索引将被自动建立

3、 语法:CREATE UNIQUE INDEX index ON table (column);

4、 演示

四、 组合索引

1、 何时创建:当两个或多个列经常一起出现在where条件中时,则在这些列上同时创建组合索引

2、 组合索引中列的顺序是任意的,也无需相邻。但是建议将最频繁访问的列放在列表的最前面

3、 演示(组合列,单独列)

五、 位图索引

1、 何时创建:

列中有非常多的重复的值时候。例如某列保存了 “性别”信息。

Where 条件中包含了很多OR操作符。

较少的update操作,因为要相应的跟新所有的bitmap

2、 结构:位图索引使用位图作为键值,对于表中的每一数据行位图包含了TRUE(1)、FALSE(0)、或NULL值。

3、 优点:位图以一种压缩格式存放,因此占用的磁盘空间比标准索引要小得多

4、 语法:CREATE BITMAP INDEX index ON table (column[, column]...);

5、 掩饰:

create table bitmaptable as select * from indextable where owner in('SYS','PUBLIC');

分析,查找,建立索引,查找

六、 基于函数的索引

   1、 何时创建:在WHERE条件语句中包含函数或者表达式时

2、 函数包括:算数表达式、PL/SQL函数、程序包函数、SQL函数、用户自定义函数。

3、 语法:CREATE INDEX index ON table (FUNCTION(column));

4、 演示

必须要分析表,并且 query_rewrite_enabled=TRUE

或者使用提示/*+ INDEX(ic_index)*/

七、 反向键索引

目的:比如索引值是一个自动增长的列:

多个用户对集中在少数块上的索引行进行修改,容易引起资源的争用,比如对数据块的等待。此时建立反向索 引。

性能问题:

语法:

重建为标准索引:反之不行

八、 键压缩索引

比如表landscp的数据如下:

site feature job

Britten Park, Rose Bed 1, Prune

Britten Park, Rose Bed 1, Mulch

Britten Park, Rose Bed 1,Spray

Britten Park, Shrub Bed 1, Mulch

Britten Park, Shrub Bed 1, Weed

Britten Park, Shrub Bed 1, Hoe

……

查询时,以上3列均在where条件中同时出现,所以建立基于以上3列的组合索引。但是发现重复值很多,所以考虑压缩特性。

Create index zip_idx

on landscp(site, feature, job)

compress 2;

将索引项分成前缀(prefix)和后缀(postfix)两部分。前两项被放置到前缀部分。

Prefix 0: Britten Park, Rose Bed 1

Prefix 1: Britten Park, Shrub Bed 1

实际所以的结构为:

0 Prune

0 Mulch

0 Spray

1 Mulch

1 Weed

1 Hoe

特点:组合索引的前缀部分具 有非选择性时,考虑使用压缩。减少I/O,增加性能。

九、 索引组织表(IOT)

将表中的数据按照索 引的结构存储在索引中,提高查询速度。

牺牲插入更新的性能,换取查询 性能。通常用于数据仓库,提供大量的查询,极少的插入修改工作。

必须指定主键。插入数据时,会根据主键列进行B树索引排序,写入磁盘。

十、 分区索引

簇:

A cluster is a group of tables that share the same data blocks because they share common columns and are often used together.

【AI智能体】Codex + Obsidian 打造专业知识库实战详解 Codex + Obsidian 搭建并操作知识库实战详解 阅读详情

相关推荐

【超简单】一文入门在Ubuntu系统使用GitHub

Github是基于git的代码仓库,对于开发项目的科研者或者工程师,代码仓库都是不可多得的版本控制与多端编程工具,今天这篇文章带你轻松Github入门,简单的项目本文的操作足矣。

a13337649640的博客 5236

Oracle--索引

索引(INDEX)是数据库中用于提高查询效率的一种数据结构。它可以加速数据库表的数据查找、过滤和排序等操作。索引是一种类似于字典的数据结构,用于快速查找表中的某个值,类似于书本中的目录页,可以帮助用户快速找到所需内容

m0_49929446的博客 1590

批量读取_MCGS触摸屏如何实现批量读取modbus数据的方法?

前两天,在一个QQ群里,有同行的朋友问,在MCGS中如何实现批量读取数据,因为他当时面临设备,通讯协议才是MODBUS RTU,同时厂家说地址不能分开读,必须是连续的。鉴于他提供的消息是能够设置的地方都试过了。为此,我直接告诉通过脚本,批量读取的方案。那么这个方案究竟如何实现?且看我下面慢慢道来。一、工具1.modsim:仿真PLC或者第三方设备。2.MCGS组态软件3.串口软件:在电脑中生成两不...

weixin_32511509的博客 8160

各种Oracle索引类型介绍

逻辑上:Single column 单行索引 Concatenated 多行索引 Unique 唯一索引 NonUnique 非唯一索引 Function-based函数索引 Domain 域索引物理上:Partitioned 分区索引 NonPartitioned 非分区索引 B-tree: Normal 正常型B树 Rever Key 反转型B树 Bitmap 位图索引索引结构:B-tree:

极客神殿 3万+

LightTools中VBA宏的编写入门

LightTools和VBA联动

bestgamer的博客 2348

Comsol实战:铌酸锂x切与z切参数设置全攻略(附电场强度归一化技巧)

本文详细介绍了在Comsol Multiphysics中设置铌酸锂x切与z切晶体参数的全流程,包括晶体取向定义、电光系数配置及关键光学参数计算。重点讲解了电场强度归一化这一实用技巧,帮助用户提升仿真分析效率,为设计电光调制器等集成光子器件提供精准的仿真基础。

year5的博客 583

13.oracle索引

主页全部笔记

qq_45298339的博客 997

基于STM32与FPGA Cyclone IV的FSMC高速数据通信实战解析

本文详细解析了基于STM32的FSMC接口与FPGA Cyclone IV实现高速并行数据通信的实战方案。通过将FPGA模拟为SRAM设备,构建了MCU与FPGA之间的高速数据通道,并深入探讨了硬件连接、STM32软件配置、FPGA逻辑设计及性能优化等关键步骤,为图像处理、高速采集等需要大数据量交换的嵌入式应用提供了稳定高效的通信解决方案。

swift5iosmith的博客 294

Oracle 索引 详解

<br />一.索引介绍<br /> 1.1 索引的创建语法: <br />CREATE UNIUQE | BITMAP INDEX <schema>.<index_name><br />      ON <schema>.<table_name><br />           (<column_name> | <expression> ASC | DESC,<br />            <column_name> | <expression> ASC | DESC,...)<br />     T

无双小宝 4050

局域网tcp通信实验

IPv4 地址 . . . . . . . . . . . . : 192.168.92.79。IPv4 地址 . . . . . . . . . . . . : 192.168.92.59。子网掩码 . . . . . . . . . . . . : 255.255.255.0。子网掩码 . . . . . . . . . . . . : 255.255.255.0。使用这篇文章的小工具。

weixin_51883798的博客 434

[QMT量化交易小白入门]-七十六、从tick数据中获取高频交易的量价背离信号

本专栏主要是介绍QMT的基础用法,常见函数,写策略的方法,也会分享一些量化交易的思路,大概会写100篇左右。QMT的相关资料较少,在使用过程中不断的摸索,遇到了一些问题,记录下来和大家一起沟通,共同进步。

木头大左的博客 791

Oracle 索引详解

Oracle 索引详解 一.索引介绍  1.1 索引的创建语法:  CREATE UNIUQE | BITMAP INDEX .       ON .            ( |  ASC | DESC,              |  ASC | DESC,...)      TABLESPACE       STORAGE       LOGGING | NOLOGGING

醉爱梁静茹 1万+

Altium Designer(AD24/25)导入DXF或DWG结构文件的方法

DXF(Drawing Exchange Format)和DWG(Drawing)是两种常见的CAD(计算机辅助设计)文件格式,常用于结构和硬件之间的沟通。本文介绍Altium Designer(AD24/25)导入DXF或DWG结构文件的方法。

fydar的博客 1447

oracle中常见索引,Oracle中的索引详解(整理)

一、 ROWID的概念存储了row在数据文件中的具体位置:64位 编码的数据,A-Z, a-z, 0-9, +, 和 /,row在数据块中的存储方式SELECT ROWID, last_name FROM hr.employees WHERE department_id = 20;比 如:OOOOOOFFFBBBBBBRRROOOOOO:data object number, 对应dba_obje...

weixin_42493313的博客 4690

SAP B1中文培訓教材_SDK

公司内部培训资料,对开发工具 ,DIAPI, UIAPI,Add-ON有详细解说

老版QQ原生表情gif动态

这是老版的QQ表情,不过全是动态的的,Windows照片查看器是不会动的,可以右击用浏览器打开查看,再说一遍是老版的,只是分享给宁愿用老版也要动态的人。

oracle怎么用索引来查询,Oracle中的索引详解

【IT168 技术文档】一、 ROWID的概念存储了row在数据文件中的具体位置:64位编码的数据,A-Z, a-z, 0-9, +, 和 /,row在数据块中的存储方式SELECT ROWID, last_name FROM hr.employees WHERE department_id = 20;比如:OOOOOOFFFBBBBBBRRROOOOOO:data object number, ...

weixin_39553904的博客 2066

jdk-8u144-linux-x64.tar.gz.

该资源为搭建Linux系统Java环境用,资源的后缀为tar.gz格式的压缩包

Oracle索引详解(索引的原理,创建索引,删除索引,修改索引等)

Oracle索引的介绍,索引的创建,索引的删除和修改等

xinliucs的博客 2万+

蓝牙模块HM-10手册

蓝牙模块HM-10手册,该手册对蓝牙模块HM-10进行了详细的介绍和使用方法以及一些AT指令。

oracle索引群集因子,Oracle索引详解

Oracle索引详解(一)### --索引介绍??索引对于Oracle学习来说,非常重要,在数据量巨大的状况下,使用恰到好处的索引,将会使得数据查询时间大大减少,于2017/12/25暂时对Oracle中的索引进行一个大致的了解。索引的创建语法索引的特点索引的不足比较适合建立索引的列的特点不适合建立索引的列的特点限制索引(建立了索引,但是无法使用)查询索引组合索引Oracle rowid选择性群集...

weixin_36257615的博客 262

oracle 索引个数限制,oracle索引详解

索引对于Oracle学习来说,非常重要,在数据量巨大的状况下,使用恰到好处的索引,将会使得数据查询时间大大减少。1、索引的创建语法:CREATE UNIUQE | BITMAP INDEX .ON .( | ASC | DESC, | ASC | DESC,...)TABLESPACE STORAGE LOGGING | NOLOGGINGCOMPUTE STATISTICSNOCOMPRES...

weixin_35861708的博客 2117

oracle中创建hash索引的语句,Oracle 索引 详解 - 索引介绍

一.索引介绍1.1索引的创建语法:CREATEUNIUQE|BITMAPINDEX.ON.(|ASC|DESC,|ASC|DESC,...)TABLESPACESTORAGELOGGING|NOLOGGINGCOMPUTESTATISTICSNOCOMPRESS|COMPRESSNOSORT|REVERSEPARTITION|GLOBALPA...

weixin_39829497的博客 1788
上一篇: 簇 oracle
下一篇: AtomicInteger JAVA
lb8607
博客等级 码龄18年 17粉丝 18原创
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

当前余额3.43元 前往充值 >
需支付:10.00元
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付元
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值