Oracle(12)Managing Indexes
目录
目标:
一、基础知识
1、Classification ofindexes 索引的分类
2、B-Tree vs Bitmap
3、Creating Indexes: Guidelines 创建索引:准则
4、Offline Index Rebuild 脱机索引重建
5、RebuildingIndexes 重建索引
6、Online Index Rebuild 在线索引重建
7、Index Coalescing 索引合并
8、Getting Index Information 获取索引信息
二、基础操作
1、创建普通索引
2、Creating B-Tree Indexes 创建B树索引
3、创建Bit map索引
4、Storage Params for indexes 修改索引的存储参数
5、Alloc & Dealloc Index Space 分配和取消分配索引空间
6、Rebuilding Indexes 重建索引
7、Rebuilding indexes Online 在线重建索引
8、Coalescing Indexes 合并索引(解决碎片化问题)
9、Checking Index Validity 检查索引有效性
10、Dropping Indexes 删除索引
11、Identifying Unused indexes 识别未使用的索引

Managing Indexes 管理索引
目标:
- 列出不同类型的索引及其用法
- 创建各种类型的索引
- 重组索引
- 维护索引
- 监视索引的使用情况
- 获取索引信息
一、基础知识
1、Classification ofindexes 索引的分类
- Logical 逻辑分类:
- Single column or concatenated 单列或级联
- Unique or nonunique 唯一或非唯一
- Function-based 基于功能的
- Domain 域名
- Physical 物理分类:
- Partitioned or nonpartitioned 分区或非分区
- B-tree: Normal or reverse key B树:正常键或反向键

- 每一个绿色结点都是一个Block,真正的数据是放在Leaf结点上,而Root和Branch只是为了找到Leaf结点
- Bitmap :位图
2、B-Tree vs Bitmap
- B树(大部分索引使用的都得B树索引)
- 适用于高基数色谱柱
- 更新的按键相对便宜
- 使用OR谓词的查询效率低下
- 对OLTP有用
- 位图
- 适用于低基数列
- 对关键列的更新非常昂贵
- 对于使用OR谓词的查询是有效的
- 对数据仓库很有用
3、Creating Indexes: Guidelines 创建索引:准则
- 平衡查询和DML需求
- 放置在单独的表空间中
- 使用统一的扩展大小:五个块的倍数或表空间的最小扩展大小
- 对于大型索引,请考虑NOLOGING
- INITRANS通常在索引上的块比在相应的表上更高
4、Offline Index Rebuild 脱机索引重建
- 1.Lock the table 创建锁表
- 2.Create a new, temporary index by reading againstthe contents of the existing index. 通过读取现有索引的内容来创建新的临时索引。
- 3.Drops the original index.删除原始索引。
- 4. Renames the temporary index to make it seem tobe the original index.重命名临时索引,使其看起来像是原始索引。
- 5.Remove the table lock..移除表锁。
5、RebuildingIndexes 重建索引
在以下情况下重建索引:
- 必须将现有索引移动到不同的表空间。如果索引与表在同一个表空间中,或者需要跨磁盘重分发对象,则可能需要这样做。
- 一个索引包含许多已删除的条目。这是滑动索引的典型问题,例如对订单表的订单号的索引,其中已完成的订单被删除,编号更高的新订单被添加到表中。如果有几个旧订单未完成,则可能有几个索引叶块,除了几个已删除的条目外,其余都是索引叶块。
- 必须将现有的普通索引转换为反向键索引。从早期版本的甲骨文服务器迁移应用程序时可能会出现这种情况。
- 使用ALTERTABLE将索引的表移到了另一个表空间..移动表空间命令。
6、Online Index Rebuild 在线索引重建
- 1.创建表所。
- 2.创建一个新的临时空索引和一个IOT来存储正在进行的DML。
- 3.松开表锁。
- 4.通过读取现有索引的内容填充临时索引。
- 5将lOT的内容与新索引合并
- 6.锁好表锁。
- 7.最后从IOT合并并删除原始索引。
- 8重命名临时索引,使其看起来像是原始索引。
- 9.移除表锁。
7、Index Coalescing 索引合并
- 沿着索引的底部扫描。
- 如果相邻的节点可以组合成一个节点,那么就这样做
- 合并索引比索引重建效率更快
8、Getting Index Information 获取索引信息
可以通过查询以下视图来获取有关索引的信息:
- DBA_INDEXES:DBA索引:提供关于索引的信息
- DBA_IND_COLUMNS:数据库管理系统IND列:提供有关索引的列的信息
- V$OBJECT_USAGE:对象用法:提供有关索引使用的信息
二、基础操作
1、创建普通索引
格式:CREATE INDEX 索引名字 ON 添加索引的表字段
样例:
CREATE INDEX t_idX1 ON t(id);创建一个索引,名字为t_idX1在t表的id字段上
选择是否创建索引需要根据具体情况而论,如果你需要经常查询且数据量比较大的时候创建索引会大大增加查询的速度,但是对于经常插入、修改等操作的数据不适合创建索引,因为索引会使得这写操作速度降低
2、Creating B-Tree Indexes 创建B树索引
CREATE INDEX hr.employees_last_name_idx
ON hr.employees (last_name)
PCTFREE 30 -- 如果块的剩余空间小于百分之30就无法插入
STORAGE (INITIAL 200K NEXT 200K
PCTINCREASE O MAXEXTENTS 50)
TABLESPACE indx;
简单的创建B树索引的话只需要写以上代码前两行即可(后边参数默认),高级的话需要全写进行修改参数。
3、创建Bit map索引
格式:CREATE BITMAP INDEX 索引名 ON 添加索引的表字段;
CREATE BITMAP INDEX my_bit_idx ON t(sex);
4、Storage Params for indexes 修改索引的存储参数
ALTER INDEX employees_last_name idx
STORAGE (NEXT 400K
MAXEXTENTS 100);
5、Alloc & Dealloc Index Space 分配和取消分配索引空间
分配
ALTER INDEX orders_region_id_idx
ALLOCATE EXTENT (SIZE 200K
DATAFILE '/DISK6/indx01.dbf');
取消分配
ALTER INDEX orders_id_idx
DEALLOCATE UNUSED:
6、Rebuilding Indexes 重建索引
- 使用ALTERINDEX命令可以:
- 将索引移动到不同的表空间
- 通过删除已删除的条目来提高空间利用率
ALTER INDEX orders_region_id_idx REBUILD
TABLESPACE indx02;
7、Rebuilding indexes Online 在线重建索引
- Indexes can be rebuilt with minimal table locking 可以用最少的表锁定重新生成索引
-
ALTER INDEX orders_id_idx REBUILD ONLINE;
-
- Some restrictions still apply 一些限制仍然适用
8、Coalescing Indexes 合并索引(解决碎片化问题)

ALTER INDEX orders_id_idx COALESCE;
9、Checking Index Validity 检查索引有效性
ANALYZE INDEX orders_region_id_idx
VALIDATE STRUCTURE:
10、Dropping Indexes 删除索引
- 在大容量加载之前删除并重新创建索引
- 删除不经常需要的索引,并在必要时生成索引
- 删除并重新创建无效索引
DROP INDEX hr.departments_name_idx;
11、Identifying Unused indexes 识别未使用的索引
- To start monitoring the usage of an index:要开始监视索引的使用情况
ALTER INDEX hr.dept_id_idx MONITORING USAGE
- To stop monitoring the usage of an index:若要停止监视索引的使用情况:
ALTER INDEX hr.dept_id_idx NOMONITORING USAGE
相关文章:
Oracle(12)Managing Indexes
目录 目标: 一、基础知识 1、Classification ofindexes 索引的分类 2、B-Tree vs Bitmap 3、Creating Indexes: Guidelines 创建索引:准则 4、Offline Index Rebuild 脱机索引重建 5、RebuildingIndexes 重建索引 6、Online Index Rebuild 在线索引重建 7…...
DirectX3D 虚拟现实项目 三维物体的光照及着色(五个不同着色效果的旋转茶壶)
文章目录 任务要求原始代码CPP文件代码着色器文件代码 效果展示 任务要求 本篇文章是中国农业大学虚拟现实课程的一次作业内容,需要对五个茶壶模型使用不同的光照进行着色和渲染,然后旋转展示。 本人的代码也是在其他人的代码的基础上修改来的…...
【Verilog 教程】7.3 Verilog 串行 FIR 滤波器设计
串行 FIR 滤波器设计 设计说明 设计参数不变,与并行 FIR 滤波器参数一致。即,输入频率为 7.5 MHz 和 250 KHz 的正弦波混合信号,经过 FIR 滤波器后,高频信号 7.5MHz 被滤除,只保留 250KMHz 的信号。 输入频率&#x…...
用golang实现一个基于interface的多态示例,展示其使用场景和优劣性。
以下是一个简单的基于interface的多态示例,该示例展示了如何通过使用interface来实现多个不同类型的结构体的共同行为。具体示例如下: package mainimport "fmt"type Animal interface {Speak() string }type Dog struct {Name string }func …...
ArcGIS for Android 禁止地图旋转
ArcGIS for Android 禁止地图旋转 话不多说,直接上代码!!! public class LoadMap extends AppCompatActivity {// 地图private MapView mapView;private ArcGISMap map;Overrideprotected void onCreate(Bundle savedInstanceSta…...
freertos静态创建任务
在开始前先有个小插曲,我的keil的自动补全代码功能使用不了,经过查找是因为之前装51把有的文件覆盖了,照这篇博客就可以解决。 然后之前那份代码我们是动态创建任务,先来说一下动态创建任务和静态创建任务的区别: Fre…...
VBA根据Excel内容快速创建PPT
示例需求:根据Excel中选中的单元格内容(3列)如下图所示,在已打卡的PowerPoint文件中创建页面。 新增PPT Slide页面使用第二个模板页面,其中包含两个文本占位符,和一个图片占位符。将Excel选中区域中前两列写…...
服务器操作系统有哪些
服务器操作系统有哪些 电脑想要运行就离不开操作系统,而服务器想要正常运行同样也离不开操作系统,那你知道服务器系统有哪些?服务器系统与电脑系统有什么区别?这些问题就由壹基比小鑫在下文中来告诉大家。 服务器系统有哪些&…...
泄漏检测与修复(LDAR)过程管控平台(销售出租)VOCs便携式总烃分析仪(销售出租)
LDAR是Leak Detection and Repair(泄漏检测与修复)的缩写,也是国际上较先进的化工废气检测技术。LDAR主要通过检测化工企业原料输送管道、泵、阀门、法兰等易产生易产生挥发性有机物(简称VOCs)泄漏的部位,并…...
VueX 模块化和namespace
当我们的项目很大的时候,VueX中的代码会越来越多,会有处理数据的,处理人员列表的,处理订单的... 如果我们将这些东西都写在一个state、actions和mutations中的话,就非常不方便后期的维护。 所以我们引入了VueX的模块…...
7-4 修理牧场 分数 15
#include<iostream> #include<queue> using namespace std; #define maxn 10005int main() {int n 0, data 0;cin >> n;//建小堆: //上调建堆中用greater: 父大子小 父子交换 小的上去 大的下去 priority_queue<int, vector<int>, greater<int…...
自定义element-ui plus 函数式调用,在API,js中直接使用全局组件
npm方式: npm install -D unplugin-vue-components unplugin-auto-import yarn 方式 : yarn add unplugin-vue-components; yarn add unplugin-auto-import; 使用官方的这个: vite.config.js中配置 plugins: [vue(),AutoImport({resolvers: [ElementPlusResolve…...
[LeetCode]-876.链表的中间结点-206.反转链表-21.合并两个有序链表-203.移除链表元素
目录 876.链表的中间结点 题目 思路 代码 206.反转链表 题目 思路 代码 21.合并两个有序链表 题目 思路 代码 203.移除链表元素 题目 思路 代码 876.链表的中间结点 876. 链表的中间结点 - 力扣(LeetCode)https://leetcode.cn/problems/mi…...
通过git多人协调开发
多人协调开发过程中的问题解决。 1.新建远程的仓库分支; 2.拉取线上代码,并在VScode中打开; 3 拉完之后,打开VScode之后的左下角显示的就是当前分支的名称,点击之后即可随意切换; 4 创建本地分支࿰…...
CentOS 7 通过 yum 安装 MariaDB(Mysql)
这一版取消了修改配置的操作,改成每次创建数据库时手动指定字符集编码;这一版取消了修改密码的操作,保留 MariaDB 使用无密码的情况,即密码是 ""。 安装步骤: 以下操作都以 root 用户进行操作 以下操作都以 …...
【Solidity】Remix在线环境及钱包申请
好久没有学习区块链方面的知识了,目前通过自学大致掌握了Fabric联盟链的搭建,链码编写、部署,api调用,可以独立开发出一些基于fabric的应用,感觉开发出去中心化的应用还是很有意思的,因为他与之前开发的ssm…...
ARFoundation系列讲解 - 92 涂鸦效果
--- 视频来源于网络,如有侵权必删 --- 案例中使用的软件版本 Unity2023.1.17.f1c1ARFoundtaion 5.1.0Apple ARKit XR Plugin 5.1.0 Google ARCore XR Plugin 5.1.0技术分析 我们可以实时检测用户手指触摸的屏幕位置,从触摸位置投射一条射线(Raycast),再射线命中的目标位置…...
立创eda专业版学习笔记(8)(运行模式)
以前没注意过这个问题,我有2台电脑,都能登录eda专业版,但是一台是全在线模式,另外一台是半离线模式,虽然是同一个账号,但是打开里面的工程会发现,两边的工程完全不同,因为一台的工程…...
349.两个数组的交集+350.两个数组的交集II(set/multiset)
目录 一、349.两个数组的交集 二、350.两个数组的交集II 一、349.两个数组的交集 349. 两个数组的交集 - 力扣(LeetCode) class Solution { public:vector<int> intersection(vector<int>& nums1, vector<int>& nums2) {//…...
数据结构与算法之排序: 桶排序 (Javascript版)
排序 排序:把某个乱序的数组变成升序或降序的数组 (这里用数组来做举例) 桶排序 根据元素的取值范围,创建多个桶, 每个桶代表一个区间范围 创建桶的数量和范围需要尽可能保证元素能够被均匀分布 接下来将元素放进对应的桶中,分别对每个桶中…...
2025盘古石杯决赛【手机取证】
前言 第三届盘古石杯国际电子数据取证大赛决赛 最后一题没有解出来,实在找不到,希望有大佬教一下我。 还有就会议时间,我感觉不是图片时间,因为在电脑看到是其他时间用老会议系统开的会。 手机取证 1、分析鸿蒙手机检材&#x…...
今日科技热点速览
🔥 今日科技热点速览 🎮 任天堂Switch 2 正式发售 任天堂新一代游戏主机 Switch 2 今日正式上线发售,主打更强图形性能与沉浸式体验,支持多模态交互,受到全球玩家热捧 。 🤖 人工智能持续突破 DeepSeek-R1&…...
HDFS分布式存储 zookeeper
hadoop介绍 狭义上hadoop是指apache的一款开源软件 用java语言实现开源框架,允许使用简单的变成模型跨计算机对大型集群进行分布式处理(1.海量的数据存储 2.海量数据的计算)Hadoop核心组件 hdfs(分布式文件存储系统)&a…...
C++.OpenGL (20/64)混合(Blending)
混合(Blending) 透明效果核心原理 #mermaid-svg-SWG0UzVfJms7Sm3e {font-family:"trebuchet ms",verdana,arial,sans-serif;font-size:16px;fill:#333;}#mermaid-svg-SWG0UzVfJms7Sm3e .error-icon{fill:#552222;}#mermaid-svg-SWG0UzVfJms7Sm3e .error-text{fill…...
宇树科技,改名了!
提到国内具身智能和机器人领域的代表企业,那宇树科技(Unitree)必须名列其榜。 最近,宇树科技的一项新变动消息在业界引发了不少关注和讨论,即: 宇树向其合作伙伴发布了一封公司名称变更函称,因…...
【Android】Android 开发 ADB 常用指令
查看当前连接的设备 adb devices 连接设备 adb connect 设备IP 断开已连接的设备 adb disconnect 设备IP 安装应用 adb install 安装包的路径 卸载应用 adb uninstall 应用包名 查看已安装的应用包名 adb shell pm list packages 查看已安装的第三方应用包名 adb shell pm list…...
MySQL 索引底层结构揭秘:B-Tree 与 B+Tree 的区别与应用
文章目录 一、背景知识:什么是 B-Tree 和 BTree? B-Tree(平衡多路查找树) BTree(B-Tree 的变种) 二、结构对比:一张图看懂 三、为什么 MySQL InnoDB 选择 BTree? 1. 范围查询更快 2…...
django blank 与 null的区别
1.blank blank控制表单验证时是否允许字段为空 2.null null控制数据库层面是否为空 但是,要注意以下几点: Django的表单验证与null无关:null参数控制的是数据库层面字段是否可以为NULL,而blank参数控制的是Django表单验证时字…...
Modbus RTU与Modbus TCP详解指南
目录 1. Modbus协议基础 1.1 什么是Modbus? 1.2 Modbus协议历史 1.3 Modbus协议族 1.4 Modbus通信模型 🎭 主从架构 🔄 请求响应模式 2. Modbus RTU详解 2.1 RTU是什么? 2.2 RTU物理层 🔌 连接方式 ⚡ 通信参数 2.3 RTU数据帧格式 📦 帧结构详解 🔍…...
6.9-QT模拟计算器
源码: 头文件: widget.h #ifndef WIDGET_H #define WIDGET_H#include <QWidget> #include <QMouseEvent>QT_BEGIN_NAMESPACE namespace Ui { class Widget; } QT_END_NAMESPACEclass Widget : public QWidget {Q_OBJECTpublic:Widget(QWidget *parent nullptr);…...

