数据库索引【基础知识】

本文深入讲解了数据库索引的概念,包括索引的定义、创建语句及不同类型索引的特点,如唯一索引、组合索引、反向键索引、函数索引和位图索引,帮助读者理解如何有效利用索引提升数据库查询效率。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

一、索引简介

索引是为了加速对表中数据库的检索而创建的离散型存储结构,索引是针对表创建的,是由数据页以外的索引页组成,每个索引页中的行都含有逻辑指针,以便加速检索物理数据。

CREATE [UNIQUE] | [BITMAP] INDEX index_name  --unique表示唯一索引
ON table_name([column1 [ASC|DESC],column2    --bitmap,创建位图索引
[ASC|DESC],…] | [express])
[TABLESPACE tablespace_name]
[PCTFREE n1]                                 --指定索引在数据块中空闲空间
[STORAGE (INITIAL n2)]
[NOLOGGING]                                  --表示创建和重建索引时允许对表做DML操作,默认情况下不应该使用
[NOLINE]
[NOSORT];                                    --表示创建索引时不进行排序,默认不适用,如果数据已经是按照该索引顺序排列的可以使用

二、索引分类

  • 唯一索引

       唯一索引建立在表中无重复记录的列、

       ORACLE在创建主键时,自动给主键添加唯一索引

       语法:

create unique index index_name on table_name(column_name);
  • 组合索引

       给表中多列创建的索引

       组合索引随意排列,使用频率最高的列放在首位

       语法:

create index index_name on table_name (column_name1,column_name2); 
  • 反向键索引

       反向键索引反转索引列键值的每个字节,为了实现索引的均匀分配,避免b树不平衡 
       通常建立在值是连续增长的列上,使数据均匀地分布在整个索引上 
       创建索引时使用REVERSE关键字

       语法:

create index index_name on table_name(index_name) reverse;
  • 函数索引

       当函数运用在where条件里,可以为函数创建索引

       表达式中不能出现聚合函数 ,例如:可以使用len、trim、substr、upper(每行返回独立结果),

       不能使用如sum、max、min、avg等

       不能在LOB类型的列上创建 
       创建时必须具有 QUERY REWRITE 权限

       语法:

create index index_name on table_name(函数名(cloumn_name));
  • 位图索引

       创建位图索引时,oracle会扫描整张表,并为索引列的每个取值建立一个位图(位图中,对表中每一行 使用一位(bit,0或者1)来标识该行是否包含该位图的索引列的取值,如果为1,表示对应的rowid所在的记录包含该位图索引列值),最后通过位图索 引中的映射函数完成位到行的ROWID的转换。

      对于基数小的列(例如性别等),表中update操作少时,适合简历位图索引

      语法:

create bitmap index index_name on table_name(index_name);

 

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值