Oracle 中的索引总结

开发者福利!热门AI工具限时免费用 购周边即赠Coding Plan Lite,Claude Code、Cursor等20+工具畅享,效率翻倍! 阅读详情

Oracle 中的索引总结

1.什么是索引

- 索引是与表相关的一个可选结构
- 用来提高SQL查询语句执行的性能
- 减少磁盘的I/O
- 使用CREATE INDEX 语句创建索引
- 在逻辑上和物理上都独立于表的数据
- Oracle 自动维护索引

2.索引的类型与结构

1、索引类型
从总的概念上来说,索引分为B树索引(也叫平衡树索引,即就是什么都不写,最常用)和位图索引(多用于数据仓库)。这两种索引在逻辑结构(存储)上完全不同。
B树索引
其中B树索引 又可以具体分为:
在这里插入图片描述
(1)唯一索引:
唯一索引确保在定义索引的列中没有重复值
Oracle 自动在表的主键列上创建唯一索引
语法:使用CREATE UNIQUE INDEX语句创建唯一索引
create unique index index_name on table_name(column_name);
具体列值: 索引相关列上的值必须唯一,但可以不限制NULL值。
(2)组合索引:
组合索引是在表的多个列上创建的索引
索引中列的顺序是任意的
如果 SQL 语句的 WHERE 子句中引用了组合索引的所有列或大多数列,则可以提高检索速度
语法:create index index_name on table_name (column_name1,column_name2);
具体列值:该表中的元组由两列共同确定一行,例如班级号 学号 唯一确定一个学生。
(3)反向键索引:
反向键索引反转索引列键值的每个字节,为了实现索引的均匀分配,避免b树不平衡
通常建立在值是连续增长的列上,使数据均匀地分布在整个索引上
创建索引时使用REVERSE关键字
语法:create index index_name on table_name (column_name) reverse;
具体列值: 适用于某列值前面相同,后几位不同的情况,例如
sno: 1001 1002 1003 1004 1005 1006 1007
索引转化:1001 2001 3001 4001 5001 6001 7001
(4)位图索引:
位图索引适合创建在低基数列上
位图索引不直接存储ROWID,而是存储字节位到ROWID的映射,节省空间占用
如果索引列被经常更新的话,不适合建立位图索引
总体来说,位图索引适合于数据仓库中,不适合OLTP中
语法:create bitmap index index_name on table_name (column_name);
具体列值: 不适用于经常更新的列,适用于条目多但取值类别少的列,例如性别列。
(5)基于函数的索引:
基于一个或多个列上的函数或表达式创建的索引
表达式中不能出现聚合函数
不能在LOB类型的列上创建
创建时必须具有 QUERY REWRITE 权限
语法:create index index_name on table_name (函数(column_name));
具体列值: 不能在LOB类型的列上创建,用户在该列上对该函数有经常性的要求。
例如:用户不知道存储时候姓名是大写还是小写,使用
select * from dept where upper(ename)=’SCOTTER’;

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

相关推荐

Oracle数据库基础知识——索引

索引是数据库中用于加快数据检索速度的数据结构,类似于书籍的目录。它可以帮助数据库快速定位到数据所在的位置,提高查询效率。索引基于一个或多个列的值创建,并按照一定的数据结构进行组织,允许数据库系统更快速地访问和检索数据。

2301_79104080的博客 2840

Oracle中的索引

了解Oracle中的索引概念,有哪些类型,如何使用索引,清楚索引的作用!

m0_71406734的博客 1万+

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

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

xinliucs的博客 2万+

Oracle 中的索引

在关系数据库中,索引是一种与表有关的数据库结构,它可以使对应于表的SQL语句执行得更快。索引的作用相当于图书的目录,可以根据目录中的页码快速找到所需的内容。对于数据库来说,索引是一个必选项,但对于现在的各种大型数据库来说,索引可以大大提高数据库的性能,以至于它变成了数据库不可缺少的一部分。1.1、索引的特点1)索引是表的一部分,是可选的,表可以没有索引,就像书可以没有目录一样,数据库不做强制要求。2)合理的索引可以提高数据查找的效率,减少磁盘I/O。3)唯一索引可以约束表数据的完整性。

KevinChen2019的博客 4074

oracle中的索引----重要

通俗的来讲,索引在表中的作用,相当于书的目录对书的作用。                 &amp

lili小虫子的博客 4万+

oracle索引有哪些分类,Oracle中的索引分类

Oracle中的索引分类(2012-05-01 08:12:24)标签:索引b树位图创建检索功能杂谈Oracle中可以创建多种类型的索引,以适应各种表的特点和各种查询条件的特点;可以按列的多少,索引列是否唯一、索引数据的组织形式对索引进行分类。1.单列索引与复合索引一个索引可以由一个或多个列组成,用来创建索引的列被称为“索引列”。单列索引是基于单列所创建的索引,复合索引是基于两列或者多列所创建的索...

weixin_36199877的博客 4520

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的博客 4687

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,

李赛赛的专栏 1064

Oracle执行计划中的索引

Oracle执行计划根据索引的类型与where限制条件的不同,有5种类型的索引扫描,分别是:索引唯一扫描(index unique scan),索引范围扫描(index range scan),索引全扫描(index full scan),索引快速扫描(index fast full scan)索引跳跃式扫描 (index skip scan)。      1、索引唯一扫描(index uniq

Java我人生的技术博客 3824

oracle中的函数索引,oracle中使用函数索引FBI

oracle中使用函数索引FBI作者:罗代均 http://hi.baidu.com/luodaijun/使用基于函数的索引(FBI)时,需要先设置初始化参数query_rewrite_enabled=TRUE(默认为false)该参数在init.ora里设置,以oracle 9i2为例,init.ora文件路径为D:\oracle\admin\mydb\pfile,我这里把oracle装在D盘,...

weixin_33347467的博客 294

oracle中的索引

oracle中的索引   索引是用于加速数据存取的数据对象。   合理的索引可以大大降低I/O次数,从而提高数据访问的性能。 1.索引的分类:     Ⅰ.按索引列的个数分类       a.单列索引       单行索引是基于单个列所建立的索引       create index 索引名 on 表名(列名);       b.复合索引        复合索引

u014601540的专栏 626
上一篇: Java 基础知识点总结
下一篇: 了解到的SQL语句优化
郑枫_
博客等级 码龄7年 1粉丝 9原创
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值