当前位置: 首页 > article >正文

oracle:索引(B树索引,位图索引,分区索引,主键索引,唯一索引,联合索引/组合索引,函数索引)

索引通过存储列的排序值来加快对表中数据的访问速度,帮助数据库系统快速定位到所需数据,避免全表扫描

B树索引(B-Tree Index)

B树索引是一种平衡树结构,适合处理范围查询和精确查找。它的设计目标是保持数据有序,并支持高效的插入、删除和查找操作。是 Oracle 数据库中一种最常见的索引类型, 索引没有指定索引类型时默认是B树索引

语法 : 根据表中的某个字段创建索引

索引名命名规范: idx_表名_字段名

(不强制,只是相对规范,其他起名方式也可以)

位图索引(Bitmap Index)

主要用于处理低基数列(即列中唯一值较少的列,如性别、状态等)。位图索引通过使用位图(bitmap)来表示数据的存在与否,适合在数据仓库或决策支持系统(DSS)中使用,尤其是在需要处理大量静态数据和复杂查询的场景中。

语法

分区索引(Partitioned Index)

是与分区表(Partitioned Table)相关联的索引。分区表是将大表数据按某种规则(如范围、列表、哈希等)分成多个较小的分区(Partition),而分区索引则是为这些分区创建的索引。分区索引可以显著提高大表的查询性能,尤其是在数据量非常大的情况下。

分类

区别: 当表分区发生变化(如添加、删除、合并分区)时,本地分区索引会自动同步, 全局分区索引可能需要手动维护 

语法

以上语法没有指定索引实现方式, 默认是B树索引

主键索引和唯一索引

主键索引和唯一索引通常都是使用B树索引来实现的, 通常不将主键索引和唯一索引指定为位图索引/哈希索引。

共同点:

1.唯一索引和主键索引都是用来保证数据的唯一性的;

2.都可以在建表时定义

区别:

1.主键索引不能包含NULL值, 唯一索引可以有NULL值且可以出现多次(因为NULL不等于任何值,包括它自己)。

2.一个表只能有一个主键索引,但可以有多个唯一索引

主键索引的语法

主键索引字段是单个时是单一主键索引, 字段有2个或以上时是复合主键索引

唯一索引的语法

联合索引/组合索引

指在多个列上创建的索引。它适用于查询条件中同时涉及多个列的场景, 默认属于B树索引,不支持直接将联合索引创建为哈希索引

索引(a , b , c) 有3个字段,相当于建了3个索引, 即索引(a) , 索引(a , b) , 索引(a, b , c)

联合索引的顺序影响查询效率,应根据查询频率和选择性设计索引。高选择性的列应放在前面

最左原则:

联合索引按从左到右的顺序匹配,查询条件必须包含最左侧的列,否则索引可能失效。例如,索引为 (A, B, C),查询条件应包含 A,否则索引可能无法使用

如果联合索引是 (A, B, C),而查询条件是 A 和 C(即缺少中间的 B),联合索引部分有效

函数索引

基于表达式或函数创建的索引。它适用于查询条件中包含函数或表达式的场景, 常用于优化复杂的计算列查询以及大小写不敏感的查询, 默认属于B树索引, 不支持将函数索引直接指定为哈希索引

指定位图索引的语法

 

查看索引

查看索引信息

USER_INDEXES 视图包含了当前用户拥有的所有索引的信息

ALL_INDEXES 视图包含了当前用户有权限访问的所有索引的信息

DBA_INDEXES 视图包含了数据库中所有索引的信息。你需要有 DBA 权限才能访问这个视图。

查看索引包含的列

查看索引的储存信息

 

USER_SEGMENTS是一个系统视图, 用于描述当前用户所拥有的对象的段(Segment)的存储分配情况, 段是 Oracle 数据库中分配存储空间的逻辑单位,用于存储表、索引、分区、簇等对象的数据

索引选择:如果聚簇因子较高,CBO 可能会认为全表扫描的成本更低,从而选择全表扫描而不是索引扫描

查看索引的分区信息(如果索引是分区索引)

获取索引的DDL

通过对象面板查看索引

查看索引 :     Tables>>表名>>查看

查看索引DDL:          Tables>>表名>>DBMS_元数据(D)>>DDL

删除索引

授权sql

如果尝试删除一个不存在的索引,数据库会抛出一个错误

验证索引是否已删除

删除与约束相关的索引

如果索引是某个约束(如主键或唯一约束)的一部分,Oracle 会自动为该约束创建索引。这种情况下,不能直接删除索引,需要删除约束, 删除约束= 删除相应的索引

ALTER TABLE employee
DROP CONSTRAINT 约束名;

删除分区索引

直接使用 DROP INDEX 删除整个索引,或者删除特定的分区

ALTER INDEX 分区索引名称
DROP PARTITION 分区名;

索引状态(Index Status)

它决定了索引是否可以被数据库使用。索引的状态可以通过数据字典视图 USER_INDEXESALL_INDEXES 或 DBA_INDEXES 中的 STATUS 列来查看。

索引修复

索引状态值

VALID(有效)或USABLE(可用)

 这是索引的正常状态,表示索引已经成功创建并且可以用于查询优化

UNUSABLE(不可用); 

索引当前不可用,数据库不会使用该索引

INVISIBLE(不可见)

INPROGRESS (进行中)

FAILED(失败)

N/A(不适用)

通常出现在分区索引中,表示某些分区的索引状态不适用.N/A代表Not Applicable

PARTIALLY USABLE(部分可用)

 

相关文章:

oracle:索引(B树索引,位图索引,分区索引,主键索引,唯一索引,联合索引/组合索引,函数索引)

索引通过存储列的排序值来加快对表中数据的访问速度,帮助数据库系统快速定位到所需数据,避免全表扫描 B树索引(B-Tree Index) B树索引是一种平衡树结构,适合处理范围查询和精确查找。它的设计目标是保持数据有序,并支持高效的插入…...

大模型实战篇之Deepseek二、一键部署DeepSeek-V3和DeepSeek-R1模型

一键部署DeepSeek-V3和DeepSeek-R1模型:3步,0代码! 随着人工智能技术的飞速发展,越来越多的企业和开发者希望将强大的AI模型快速应用到实际业务中。DeepSeek作为一款高性能的语言模型,已经在多个领域展现出巨大的应用潜力。然而,传统的模型部署流程往往复杂且耗时。今天,…...

【CPP】CPP经典面试题

文章目录 引言1. C 基础1.1 C 中的 const 关键字1.2 C 中的 static 关键字 2. 内存管理2.1 C 中的 new 和 delete2.2 内存泄漏 3. 面向对象编程3.1 继承和多态3.2 多重继承 4. 模板和泛型编程4.1 函数模板4.2 类模板 5. STL 和标准库5.1 容器5.2 迭代器 6. 高级特性6.1 移动语义…...

Windows 中学习Docker环境准备2、Docker Desktop中安装ubuntu

Windows 中学习Docker环境准备1、Win11安装Docker Desktop Windows 中学习Docker环境准备2、Docker Desktop中安装ubuntu Windows 中学习Docker环境准备3、在Ubuntu中安装Docker 需要更多Docker学习视频和资料,请文末联系 一、安装 Docker Desktop 下载 Docker…...

C++11详解(三) -- 可变参数模版和lambda

文章目录 1.可变模版参数1.1 基本语法及其原理1.2 包扩展1.3 empalce系列接口1.3.1 push_back和emplace_back1.3.2 emplace_back在list中的使用(模拟实现) 2. lambda2.1 lambda表达式语法 1.可变模版参数 1.1 基本语法及其原理 1. C11支持可变参数模版&…...

网站打开提示不安全

当网站打开时显示“不安全”提示(通常表现为浏览器地址栏中出现“不安全”字样或红色警告图标),这意味着网站未使用有效的SSL证书或HTTPS协议,导致浏览器认为连接不安全。以下是解决这一问题的详细步骤: 一. 原因分析 …...

OpenCV:特征检测总结

目录 一、什么是特征检测? 二、OpenCV 中的常见特征检测方法 1. Harris 角点检测 2. Shi-Tomasi 角点检测 3. Canny 边缘检测 4. SIFT(尺度不变特征变换) 5. ORB 三、特征检测的应用场景 1. 图像匹配 2. 运动检测 3. 自动驾驶 4.…...

标志的推理

下面的讨论是我对《对编程实现拟人智能可行性的论证》这篇文章的“赋值与对象的标志”这一节的展开讨论。 标志能够使我们更好的思维(比如用轮廓标记物体对象,用兴奋强度标记回忆情况等等)。有思维标志、信息标志,单纯标志、组合…...

python学opencv|读取图像(五十七)使用cv2.bilateralFilter()函数实现图像像素双边滤波处理

【1】引言 前序学习过程中,已经掌握了对图像的基本滤波操作技巧,具体的图像滤波方式包括均值滤波、中值滤波和高斯滤波,相关文章链接有: python学opencv|读取图像(五十四)使用cv2.blur()函数实现图像像素…...

【SQL技术】不同数据库引擎 SQL 优化方案剖析

一、引言 在数据处理和分析的世界里,SQL 是不可或缺的工具。不同的数据库系统,如 MySQL、PostgreSQL(PG)、Doris 和 Hive,在架构和性能特点上存在差异,因此针对它们的 SQL 优化策略也各有不同。这些数据库中…...

链式结构二叉树(递归暴力美学)

文章目录 1. 链式结构二叉树1.1 二叉树创建 2. 前中后序遍历2.1 遍历规则2.2 代码实现图文理解 3. 结点个数以及高度等二叉树结点个数正确做法: 4. 层序遍历5. 判断是否完全二叉树 1. 链式结构二叉树 完成了顺序结构二叉树的代码实现,可以知道其底层结构…...

使用类别数据编码进行连续变量的特征提取

在数据科学和机器学习中,数据预处理是模型构建的重要步骤。对于处理结构化数据时,特别是包含类别型数据的场景,类别数据编码是必不可少的步骤。类别数据通常以文字、标签等形式出现,但大多数机器学习算法只能处理数值型数据,因此需要将类别数据转化为数值格式。编码方式的…...

PCL 最小包围圆(二维)

文章目录 一、简介二、实现代码三、实现效果参考资料一、简介 最小包围圆是指能够包含给定点集中所有点的最小圆。这个算法通常用于计算几何、计算机图形学、机器学习等领域。以下是该算法的基本原理和实现流程: 1. 初始化:将点集中的所有点加入待处理列表。 2. 查找最远点:…...

技术文档管理最佳实践:高效、专业、可持续

文章目录 技术文档管理最佳实践:高效、专业、可持续1. 技术文档的核心价值1.1 降低知识流失风险1.2 提升开发效率1.3 增强团队协作1.4 规范技术资产管理 2. 技术文档分类与规范2.1 代码相关文档2.2 过程与运维文档2.3 知识与培训文档 3. 工具选型:自动化…...

56. Uboot移植实验

一、NXP官方Uboot编译与测试 1、将NXP提供的uboot拷贝到ubuntu中。 一个开发板也好运行uboot,DDR或者叫DRAM,串口,SD、EMMC、NAND。板子能工作。 测似结果: 1、uboot能正常启动 2、LCD驱动要根据所使用的屏幕修改。 3、NET初始…...

AI大模型:本地部署deepseek

一、安装lmstudio 1、下载网站: LM Studio - Discover, download, and run local LLMs 2、直接安装即可,记住安装的路径 二、下载deepseek模型 2.1、下载的流程 1、下载网站 https://huggingface.co/models 2、在搜索框输入:deepseek …...

(算法竞赛)图论+DFS深搜——图的dfs遍历1

题目描述 给定一个无向图,包含 n 个顶点(编号为 1 到 n)和 e 条边。要求从顶点 1 开始进行深度优先搜索(DFS),并按照访问顺序输出遍历结果。注意:当存在多个邻接点时,优先访问编号较…...

RK3588平台开发系列讲解(DMA篇)DMA engine使用

文章目录 一、DMA 使用步骤二、DMA接口2.1、DMA 通道管理相关接口2.2、DMA 描述符相关接口2.3、DMA 启动与控制接口2.4、DMA 状态检查接口2.5、 DMA 缓存管理接口2.6、DMA 中断与同步机制沉淀、分享、成长,让自己和他人都能有所收获!😄 Linux 内核的 DMA 引擎提供了一组完整…...

报名 | IEEE ICME 2025 音频编码器能力挑战赛正式开启

音频编码器是多模态大模型的重要组件,优秀的音频编码器在构建多模态系统中至关重要。在此背景下,小米集团、萨里大学、海天瑞声共同主办了 IEEE International Conference on Multimedia & Expo (ICME) 2025 Audio Encoder Capability Challenge。 …...

fputs的概念和使用案例

fputs 是 C 语言中用于向文件写入字符串的标准库函数。它与 puts 类似,但不会自动添加换行符,且支持向任意文件流(如磁盘文件、标准输出等)写入数据。 概念解析 函数原型:int fputs(const char *str, FILE *stream); …...

ASP.NET Core标识框架Identity

目录 Authentication与Authorization 标识框架(Identity) Identity框架的使用 初始化 自定义属性 案例一:添加用户、角色 案例二:检查登录用户信息 案例三:实现密码的重置 步骤 Authentication与Authorizatio…...

PFAS(全氟烷基和多氟烷基物质)测试流程详细介绍

PFAS(全氟烷基和多氟烷基物质)测试详细介绍 什么是PFAS? PFAS是(Per-and polyfluoroalkyl substances)的简称,中文名:全氟烷基和多氟烷基物质,是一系列合成有机氟化物的总称,是指至少含有一个…...

宝塔面板端口转发其它端口至MySQL的3306

最近需要把服务器的MySQL服务开放给外网,但又希望公开给所有人。也不想用默认的3306端口。同时也不想改变MySQL的默认端口。 这时候最好的办法就是用一个不常用的端口来转发至3306上去。例如使用49306至3306,外网通过49306来访问,内网依然使用…...

inquirer介绍及配合lerna在Vue中使用示例

目录 安装基本用法使用多个提示框动态选择(动态选项)表单式输入配合lerna在Vue中使用示例 Inquirer 是一个用于创建交互式命令行工具的 Node.js 库,常用于收集用户输入。它提供了多种类型的提示框,可以用于创建交互式应用程序&…...

AI商业化:如何包装技术并找到客户需求?

AI商业化:如何包装技术并找到客户需求? 适用人群:对人工智能技术有一定沉淀,正在探索技术变现和商业模式创新的创业者、技术团队以及企业管理者。同时也适合对 AI 产品包装、市场调研与用户调研感兴趣的从业人员。 一、引言 在过去几年里,从 GPT、Transformer 到 DeepSee…...

基于MODIS/Landsat/Sentinel/国产卫星遥感数据与DSSAT作物模型同化的作物产量估算

基于过程的作物生长模拟模型DSSAT是现代农业系统研究的有力工具,可以定量描述作物生长发育和产量形成过程及其与气候因子、土壤环境、品种类型和技术措施之间的关系,为不同条件下作物生长发育及产量预测、栽培管理、环境评价以及未来气候变化评估等提供了…...

OpenAI 宣布免费开放 ChatGPT 搜索,无需注册

在科技飞速发展的今天,人工智能领域的每一次突破都犹如一颗重磅炸弹,震撼着整个世界。北京时间 2025 年 2 月 6 日凌晨,OpenAI 宣布向所有用户开放 ChatGPT 搜索功能,且无需注册,这一消息瞬间引发了全球范围内的广泛关…...

如何打开vscode系统用户全局配置的settings.json

📌 settings.json 的作用 settings.json 是 Visual Studio Code(VS Code) 的用户配置文件,它存储了 编辑器的个性化设置,包括界面布局、代码格式化、扩展插件、快捷键等,是用户全局配置(影响所有…...

DeepSeek-V3本地Docker容器化部署

1. 安装Docker 确保已安装Docker Desktop for Mac: 下载并安装 Docker Desktop。 安装完成后,启动Docker Desktop。 验证安装: docker --version docker-compose --version 2. 克隆DeepSeek-V3仓库 git clone https://github.com/deeps…...

【Leetcode 每日一题】47. 全排列 II

问题背景 给定一个可包含重复数字的序列 n u m s nums nums,按任意顺序 返回所有不重复的全排列。 数据约束 1 ≤ n u m s . l e n g t h ≤ 8 1 \le nums.length \le 8 1≤nums.length≤8 − 10 ≤ n u m s [ i ] ≤ 10 -10 \le nums[i] \le 10 −10≤nums[i]≤…...