拓扑园

  • O&M
    • Universal部署
    • PHP+VUE+Laravel相关
  • Oracle性能优化
  • Oracle项目案例
    • Oracle近期项目案例(目录)
    • Oracle实战问题解析(目录)
    • Oracle数据库名变更流程(2种方式)
    • Oracle数据库目录更换流程(使用Oracle的clone工具)
    • Oracle数据库迁移方案(目录)
    • 标准化文档系列
  • Oracle基础知识
    • LLL的Oracle培训(分类)
    • LLL的docker培训(分类)
    • 标准化文档系列--(分类)
    • Oracle核心经典分析(分类)
    • 图灵小队----(分类并包含以下文章)
    • --MySQL8.0/Oracle/Memcached/Redis等安装配置于RHEL/OL6/7/8.X系列-运行环境最优配置
    • --PG安装配置于RHEL/9X系列-运行环境最优配置
    • --自动维护任务详解-开启、关闭信息统计收集(统计信息)
    • --图灵小队—Oracle/PostgreSQL下创建一个用户测试表(自行定义数据行)
    • --图灵小队-Oracle存储过程导出表的明细_UTL_FILE(文章)
    • --图灵小队-Oracle数据库删除/卸载操作指南(文章)
    • --图灵小队-Oracle常用性能查询SQL语句(文章)
    • --图灵小队-Oracle数据库上线前检查(文章)
    • --图灵小队-Oracle常用SQL语句(文章)
    • --图灵小队—Linux/Oracle脚本/MySQL合集(持续更新)
    • --图灵小队-Oracle技巧记录(文章)
    • ADG
    • RAC
    • ASM
    • OGG
    • RMAN
    • EXPDP/IMPDP
    • 工厂数据导入导出系列
  • MySQL
    • MySQL数据库规范
    • MySQL项目案例
    • MySQL安装配置
    • MYSQL集群项目
    • MySQL常见处理
    • MySQL-Sysbench专题
    • MySQL-Percona Toolkit专题
  • Linux
    • Shell编程
    • kubernetes
    • docker
    • Linux
    • PHP
    • Nginx
    • haproxy
    • mail
    • 网站
    • 域名
    • 网址收藏
  • 数据中心
    • 新框架系统集合
    • 工作文档
    • EBS数据文件扩容
    • VMware虚拟化
    • EBS系列
    • 大数据
    • SVN
    • zabbix
    • SAP
    • 备份相关
    • FC交换机
    • SVN
  • K-Studing
    • D8-Python学习
    • Oracle/MySQl等面试题
    • LG-MySQL
    • LG-Docker/K8S
    • LG-PostgreSQL
    • LG-ORACLE_BBED
    • LG-ORACLE
    • LG-Elasticsearch(ES)+ELK
    • Oracle-19C-OCP
    • WERN_ORACLE培训
    • redis数据库
    • Nginx培训学习系列
  • 其他
    • 外研英语4年级下册-听力
    • 影视系列
    • 如何使用iTunes软件通过抓包下载旧版本的ios的app
天高任鸟飞
Oracle/MySQL数据库恢复/数据迁移/生产规范报告技术交流:TEL:18562510581(微信同号);加微信入群
  1. 首页
  2. Oracle基础知识
  3. LLL的Oracle培训
  4. 正文

LLL的数据库培训-83-第五部分—Oracle11g-Oracle SQL对象管理—第10讲—索引之B树索引子类型-唯一索引/反向键索引/键压缩索引/降序索引

2023年10月26日 801点热度 0人点赞 0条评论

目录

  • 一、Btree索引的变异类型
    • 1、唯一索引(Unique Index):
    • 2、反向键索引(Reverse Key Index):
    • 3、键压缩索引(Key Compression Index):
    • 4、降序索引(Descending Index):
  • 二、创建索引
    • 1、创建唯一索引
      • (1)语法
      • (2)案例:
    • 2、创建反向键索引
      • (1)语法
      • (2)案例:
    • 3、键压缩索引
      • (1)语法
      • (2)案例:
    • 4、创建降序索引
      • (1)语法
      • (2)案例
  • 三、索引维护
    • 1、Oracle重建索引Rebuild语句
    • 2、重建索引Rebuild语句的格式如下:
    • 3、重建索引Rebuild语句的作用
    • 4、重建索引Rebuild语句的注意事项
    • 5、索引删除
  • 四、注意事项
    • 1、唯一索引和唯一约束/主键约束的关系与区别
      • (1)创建唯一键约束或主键约束,会自动创建唯一索引
      • (2)创建唯一索引,不会自动创建唯一键约束,但索引仍然会强制数据列保持唯一性。
      • (3)创建唯一索引后,可以在dba/all/user_indexes中查到此索引,但无法在dba/all/user_constraints中找到与此列相关的唯一约束。
      • (4)创建唯一索引后,要明确的将约束关联到唯一索引上,可以使用此句:

LLL的数据库培训-83-第五部分—Oracle11g-Oracle SQL对象管理—第10讲—索引之B树索引子类型-唯一索引/反向键索引/键压缩索引/降序索引

一、Btree索引的变异类型

1、唯一索引(Unique Index):

唯一索引确保索引列中的值是唯一的,即索引列不允许有重复值。

它可以用来实现主键或唯一约束,防止重复的值插入到索引列中。

在唯一索引上进行查找时,查询会更加高效,因为数据库知道只需找到一行即可停止查找。

2、反向键索引(Reverse Key Index):

反向键索引是一种特殊类型的索引,用于减少索引键的不平衡和争用。

它使用一种算法将索引键的值反转并重新组织,以使索引值更均匀地分布在索引结构中。

这样可以减少索引节点的频繁分裂和合并,提高插入和更新操作的性能。

注意:无法将位图索引和IOT设置为反向键索引。

3、键压缩索引(Key Compression Index):

键压缩索引是一种索引压缩技术,通过使用更少的存储空间来存索引键的值。

它使用一种算法将相邻的索引键值进行压缩和编码,以减少存储空间的使用。

键压缩索引可以在有限的存储资源下提供更好的性能,减少内存开销、提高缓存效率和查询速度。

4、降序索引(Descending Index):

降序索引是一种按照降序(递减)顺序存储索引键的值的索引。

它通常用于支持按降序排序的查询,以满足特定业务需求。

降序索引可以通过使用特殊的索引选项或在查询中指定 DESC 关键字来创建和使用。

二、创建索引

1、创建唯一索引

(1)语法

CREATE UNIQUE INDEX index_name ON table_name (column_name);

(2)案例:

CREATE UNIQUE INDEX idx_unique_employee_id ON employees (employee_id);

2、创建反向键索引

(1)语法

CREATE INDEX index_name
ON table_name (column_name)
REVERSE;

(2)案例:

CREATE INDEX idx_reverse_last_name
ON employees (last_name)
REVERSE;

3、键压缩索引

(1)语法

CREATE INDEX index_name
ON table_name (column_name)
COMPRESS;

(2)案例:

CREATE INDEX idx_compressed_salary
ON employees (salary)
COMPRESS;

4、创建降序索引

(1)语法

CREATE INDEX index_name ON table_name (column_name [DESC]);

(2)案例

CREATE INDEX idx_descending_date ON orders (order_date DESC);

三、索引维护

1、Oracle重建索引Rebuild语句

Oracle重建索引Rebuild语句是Oracle数据库中常用的语句之一,它可以在不改变索引结构的情况下,对索引进行重建。

重建索引可以改善索引的性能,减少其拥有的空间,也可以用于索引的修复。

2、重建索引Rebuild语句的格式如下:

ALTER INDEX index_name REBUILD 
[PARAMETERS('parameter1=value1[,parameter2=value2]...')] 
[TABLESPACE tablespace_name] 
[PCTFREE integer] [INITRANS integer] [MAXTRANS integer] 
[STORAGE (storage_clause)] [COMPUTE STATISTICS];

其中,index_name 是要重建的索引名称。

PARAMETERS 参数指定了一些重建的选项,这些参数可以让我们指定重建时包含的数据,例如ONLINE、MONITORING 等。
TABLESPACE 参数指定了重建时使用的表空间,可以是索引原来使用的表空间,也可以是新的表空间,如果不指定,则会使用索引原来使用的表空间。

PCTFREE 和 PCTUSED 参数指定了重建时所使用的空闲空间大小,它们可以在重建的同时为索引提供更好的性能。
INITRANS 和 MAXTRANS 参数指定了重建时所使用的事务数,它们可以影响索引的性能。
STORAGE 参数指定了重建时使用的存储参数,它可以影响索引的性能。
COMPUTE STATISTICS 参数指定了是否重新计算索引的统计信息,这可以提高索引的性能。

如:

CREATE INDEX "TEST"."IND_TEST10_ID_UK1" ON "TEST"."TEST10" ("ID") 
PCTFREE 10 INITRANS 2 MAXTRANS 255 COMPUTE STATISTICS 
STORAGE(INITIAL 65536 NEXT 1048576 MINEXTENTS 1 MAXEXTENTS 2147483645
PCTINCREASE 0 FREELISTS 1 FREELIST GROUPS 1
BUFFER_POOL DEFAULT FLASH_CACHE DEFAULT CELL_FLASH_CACHE DEFAULT)
TABLESPACE "USERS"

3、重建索引Rebuild语句的作用

(1)重建索引Rebuild语句可以改善索引的性能。重建索引可以把索引中的数据重新排列,使索引更有效,提高索引的性能;
(2)重建索引Rebuild语句可以减少索引的空间。重建索引可以消除索引中的空洞,使得索引可以更有效地使用空间;
(3)重建索引Rebuild语句可以用于索引的修复。当索引因为意外情况而损坏时,可以使用重建索引Rebuild语句来修复索引;
(4)重建索引Rebuild语句可以计算索引的统计信息,从而提高索引的性能。

4、重建索引Rebuild语句的注意事项

(1)重建索引Rebuild语句会锁定索引,因此在执行重建索引Rebuild语句时,应避免并发的操作;
(2)重建索引Rebuild 语句会消耗大量的系统资源,因此应在空闲的时候执行重建索引 Rebuilding 语句;
(3)重建索引Rebuild语句可能会影响索引的性能,所以应定期监控索引的性能;
(4)重建索引Rebuild语句可能会影响数据库的空间使用情况,因此应定期监控数据库的空间使用情况;
(5)重建索引Rebuild语句可能会影响数据库的事务处理能力,因此应定期监控数据库的事务处理能力。

5、索引删除

drop index index_name;

四、注意事项

1、唯一索引和唯一约束/主键约束的关系与区别

(1)创建唯一键约束或主键约束,会自动创建唯一索引

(2)创建唯一索引,不会自动创建唯一键约束,但索引仍然会强制数据列保持唯一性。

create unique index uk_test on test(id);

(3)创建唯一索引后,可以在dba/all/user_indexes中查到此索引,但无法在dba/all/user_constraints中找到与此列相关的唯一约束。

select owner,index_name,index_type,table_name from dba_indexes where table_name='TEST' and owner='SYS';
select * from dba_constraints where table_name='TEST' and owner='SYS';

insert into test value(1,'LLL01'); insert into test value(1,'LLL02');

(4)创建唯一索引后,要明确的将约束关联到唯一索引上,可以使用此句:

alter table test add constraint idx_test unique(id);
select owner,constraint_name,table_name from dba_constraints where table_name='TEST' and owner='SYS';

 

 

 

本作品采用 知识共享署名 4.0 国际许可协议 进行许可
标签: 暂无
最后更新:2023年10月27日

admin

这个人很懒,什么都没留下

打赏 点赞
< 上一篇
下一篇 >

COPYRIGHT © 2022 拓扑园. ALL RIGHTS RESERVED.

Theme Kratos Made By Seaton Jiang

鲁ICP备2021020523号

鲁ICP备2021020523号