Oracle 19C分区表索引小结

一、大佬说(杨廷琨)

LOCAL索引的最大好处是在进行分区操作,比如TRUNCATE PARTITION, DROP PARTITION时,不会出现索引INVALID的情况,不影响索引的可用性。由于GLOBAL索引所有的数据存储在一起,因此当执行分区操作的时候,索引会失效,而如果想要保证所有的有效性,需要增加UPDATE (GLOBAL) INDEXES语句,这使得原本很快结束的DDL操作,由于需要维护全局索引而变得非常缓慢,且产生大量的日志。12c之后,全局索引的异步同步可以缓解全局索引的这个问题。

而GLOBAL索引的好处是,在表变为分区后,只要索引仍然是GLOBAL索引,通过索引访问数据的效率就不会下降。由于LOCAL索引的索引分区数量和表分区数量相等,如果访问一个LOCAL索引,且查询条件未指定分区键值,这时Oracle将会扫描所有的索引分区。而GLOBAL索引则只需要访问一棵索引树,当分区数量众多时,二者的效率差异是非常明显的。

当然,它们还有其他的区别。就用户而言,判断需要GLOBAL还是LOCAL索引,最主要看是否会频繁进行分区的维护操作,比如定期删除老分区,如果是的话,LOCAL是最佳选择,如果不是,则考虑GLOBAL索引。

二、索引验证

1、创建临时表

CREATE TABLE TEST1 (hid number,hid2 number,hchar1 char(50)) 

PARTITION BY RANGE(hid) INTERVAL (10)

( PARTITION p01 VALUES LESS THAN (5));

2、创建主键不加USING INDEX LOCAL默认是全局索引

ALTER TABLE TEST1 ADD CONSTRAINT PK_TEST PRIMARY KEY (hid)  --全局索引;

ALTER TABLE TEST1 ADD CONSTRAINT PK_TEST PRIMARY KEY (hid) USING INDEX LOCAL;

3、主键是非分区字段

ALTER TABLE TEST1 ADD CONSTRAINT PK_TEST PRIMARY KEY (hid2)  --正常执行;

ALTER TABLE TEST1 ADD CONSTRAINT PK_TEST PRIMARY KEY (hid2) USING INDEX LOCAL --报错ORA-14039: 分区列必须构成 UNIQUE 索引的关键字列子集;

ALTER TABLE TEST1 ADD CONSTRAINT PK_TEST PRIMARY KEY (hid2,hid) USING INDEX LOCAL  --正常执行;

3、unique索引是非分区字段

create unique index pk_ID on TEST1(HID2) local--报错ORA-14039: 分区列必须构成 UNIQUE 索引的关键字列子集;

create unique index pk_ID on TEST1(HID2,HID) local --正常执行;

create unique index pk_ID on TEST1(HID2) --正常执行;

alter table TEST1 add constraint pk_ID2 primary key(HID2) using index pk_ID --正常执行;

create index pk_ID99 on TEST1(HID2) local --正常执行;

alter table TEST1 add constraint pk_ID99_2 primary key(HID2) using index pk_ID99  --报错ORA-14196: 指定的索引不能用于强制约束条件;

4、非分区字段创建主键,则创建主键local索引时必须加上分区字段

ALTER TABLE TEST ADD CONSTRAINT PK_TEST PRIMARY KEY (主键字段,分区字段) USING INDEX LOCAL;

主键做local索引必须包含分区键的字段。这和oracle 如何保证纪录唯一有关,如果unique index key没有partition_key,那么每插入一行的纪录,只保证它所进入的分区中是唯一的,不保证在整个表上这个记录是否唯一,这就违背了主键的意义。(如果和分区字段一起绑定,则不需要扫描所有的索引分区就能验证整个表上这个记录是否唯一)。

5、range分区

range分区,单个分区内非分区字段的值不是顺序的,分区字段值也不是顺序的(如按100值分区,第一个分区是1-100,顺序可能是7,1,3,67,9这样的,第二分区101-200,顺序可能是199,136,103,178这样的,但是相对两个分区而言,第二个分区和第一个分区值的范围是顺序的)

分区字段的分区索引是顺序的,因为第一个数据分区开始到后面的数据分区是range顺序的,虽然单独的数据分区内数据不是顺序的

非分区字段只是某一分区索引内的索引是顺序的,不代表分区索引是顺序的。

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.rhkb.cn/news/36429.html

如若内容造成侵权/违法违规/事实不符,请联系长河编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

【RabbitMQ】RabbitMQ的基本架构是什么?包括哪些核心组件?

RabbitMQ基于AMQP协议实现,由多个核心组件组成,确保消息的可靠传递。 Rabbit的架构图: 1.RabbitMQ的基本架构: 1.核心组件: 1.Producer(生产者): 发送消息到RabbitMQ。 2.Exchange(交换机):接…

【PCB工艺】基础:电子元器件

电子原理图(Schematic Diagram)是电路设计的基础,理解电子元器件和集成电路(IC)的作用,是画好原理图的关键。 本专栏将系统讲解 电子元器件分类、常见 IC、电路设计技巧,帮助你快速掌握电子电路…

Html label标签中的for属性(关联表单控件:将标签与特定的表单元素(如输入框、复选框等)关联起来;提高可用性;无障碍性)

文章目录 示例代码for属性含义完整代码示例 示例代码 <div class"form-group"> <!-- 表单组&#xff0c;包含省份输入框和标签 --><label for"province">省份名称&#xff1a;</label> <!-- 省份输入框的标签 --><input…

S32K144外设实验(二):ADC单通道单次采样(软件触发)

文章目录 1. 概述1.1 理论回顾1.1.1 时钟系统1.1.2 采样通道1.2 实验目的2. 配置与代码编写1. 概述 1.1 理论回顾 S32K144的ADC应该说是特别灵活,笔者采用循序渐进的方式来学习使用这个很重要的外设。 在《入门笔记系列》专栏中对用户手册进行了翻译和解读,这里在回顾一下A…

进程控制~

一.进程控制 1.进程创建 我们可以通过./cmd来运行我们的程序&#xff0c;而我们运行的程序就是bash进程常见的子进程。当然我们也可以通过fork()系统调用来创建进程。 NAME fork - create a child process SYNOPSIS #include <unistd.h> pid_t fork(void…

经历过的IDEA+Maven+JDK一些困惑

注意事项&#xff1a;由于使用过程中是IDEA绑定好另外2个工具&#xff0c;所以报错统一都显示在控制台&#xff0c;但要思考和分辨到底是IDEA本身问题导致的报错&#xff0c;还是maven导致的 标准配置 maven Java Compiler Structure 编辑期 定义&#xff1a;指的是从open pr…

将bin文件烧录到STM32

将bin文件烧录到STM32 CoFlash下载生成hex文件hex2bin使用下载bin到单片机 CoFlash下载 选择需要安装的目录 在Config中可以选择目标芯片的类型 我演示的是 stm32f103c8t6 最小系统板 Adapter&#xff1a;烧录器类型 Max Clock&#xff1a;下载速度 Por&#xff1a;接口类型&am…

硬件基础(5):(2)二极管分类

文章目录 &#x1f4cc; 二极管的分类与详细介绍1. **整流二极管&#xff08;Rectifier Diode&#xff09;**特点&#xff1a;选型依据&#xff1a;补充说明&#xff1a; 2. **快恢复二极管&#xff08;Fast Recovery Diode&#xff09;**特点&#xff1a;选型依据&#xff1a;…

【MySQL】MySQL如何存储元数据?

目录 1.数据字典的作用 2. MySQL 8.0 之前的数据字典 3. MySQL 8.0 及之后的数据字典 4.MySQL 8 中的事务数据字典的特征 5.数据字典的序列化 6. .sdi文件的作用&#xff1a; 7..sdi的存储方式 在 MySQL 中&#xff0c;元数据&#xff08;Metadata&#xff09; 是描述数…

瑞萨RA系列使用JLink RTT Viewer输出调试信息

引言 还在用UART调试程序么?试试JLINK的RTT Viewer吧!不需占用UART端口、低资源暂用、实时性高延时微秒级,这么好的工具还有什么理由不用了! 目录 一、JLink RTT Viewer 简介 二、软件安装 三、工程应用 3.1 SEGGER_RTT驱动包 3.2 手搓宏定义APP_PRINT 3.3 使用APP_…

Ranger 鉴权

Apache Ranger 是一个用来在 Hadoop 平台上进行监控&#xff0c;启用服务&#xff0c;以及全方位数据安全访问管理的安全框架。 使用 ranger 后&#xff0c;会通过在 Ranger 侧配置权限代替在 Doris 中执行 Grant 语句授权。 Ranger 的安装和配置见下文&#xff1a;安装和配置 …

LabVIEW烟气速度场实时监测

本项目针对燃煤电站烟气流速实时监测需求&#xff0c;探讨了静电传感器结构与速度场超分辨率重建方法&#xff0c;结合LabVIEW多板卡同步采集与实时处理技术&#xff0c;开发出一个高效的烟气速度场实时监测系统。该系统能够在高温、高尘的复杂工况下稳定运行&#xff0c;提供高…

【系统架构设计师】操作系统 - 特殊操作系统 ③ ( 微内核操作系统 | 单体内核 操作系统 | 内核态 | 用户态 | 单体内核 与 微内核 对比 )

文章目录 一、微内核操作系统1、单体内核 操作系统2、微内核操作系统 引入3、微内核操作系统 概念4、微内核操作系统 案例 二、单体内核 与 微内核 对比1、功能对比2、单体内核 优缺点3、微内核 优缺点 一、微内核操作系统 1、单体内核 操作系统 单体内核 操作系统 工作状态 : …

人工智能之数学基础:线性方程组

本文重点 线性方程组是由两个或两个以上的线性方程组成的方程组,其中每个方程都是关于两个或两个以上未知数的线性方程。 记忆恢复 我们先从小学学习的线性方程组找到感觉 解答过程: 将第二个方程乘以2,得到: 2x−2y=2 将第一个方程减去新得到的方程,消去x: (2x+y)−…

​第十一届传感云和边缘计算系统国际会议

重要信息 时间地点&#xff1a;2025年4月18-20日 中国-珠海 会议官网&#xff1a;www.scecs.org 简介 第十一届传感云和边缘计算系统 (SCECS 2025&#xff09;将于2025年4月18-20日在中国珠海召开。将围绕“传感云”、“边缘计算系统”的最新研究领域&#xff0c;为来自国…

MDM设备管控,企业移动设备管理方案

目录&#xff1a; 目录 目录&#xff1a; 1. MDM&#xff1a;含义与定义 2. MDM如何工作&#xff1f; 3. BYOD与MDM&#xff1a;挑战与解决方案 4. 移动设备管理的主要优势 5. 移动设备管理的基本要素 6. 移动设备管理最佳实践 --地平线-- 移动设备管理 (MDM)历经多年…

S32k3XX MCU时钟配置

今天想从头开始配置S32K312中EB中的MCU模块&#xff0c;以下是我的配置思路与理解。 关键是研究明白&#xff0c;这些频率是如何通过一个总时钟&#xff0c;一步步分频得到的。 参考时钟&#xff0c;供外设模块使用&#xff0c;不同外设需要配置合理的参考时钟。 clock genera…

GitHub 超火的开源终端工具——Warp

Warp 作为近年来 GitHub 上备受瞩目的开源终端工具&#xff0c;以其智能化、高性能和协作能力重新定义了命令行操作体验。以下从多个维度深入解析其核心特性、技术架构、用户评价及生态影响力&#xff1a; 一、背景与核心团队 Warp 由前 GitHub CTO Jason Warner 和 Google 前…

SpringBoot 第二课(Ⅰ) 整合springmvc(详解)

目录 一、SpringBoot对静态资源的映射规则 1. WebJars 资源访问 2. 静态资源访问 3. 欢迎页配置 二、SpringBoot整合springmvc 概述 Spring MVC组件的自动配置 中央转发器&#xff08;DispatcherServlet&#xff09; 控制器&#xff08;Controller&#xff09; 视图解…

八股学习-JUC java并发编程

本文仅供个人学习使用&#xff0c;参考资料&#xff1a;JMM&#xff08;Java 内存模型&#xff09;详解 | JavaGuide 线程基础概念 用户线程&#xff1a;由用户空间程序管理和调度的线程&#xff0c;运行在用户空间。 内核线程&#xff1a;由操作系统内核管理和调度的线程&…