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版)
排序 排序:把某个乱序的数组变成升序或降序的数组 (这里用数组来做举例) 桶排序 根据元素的取值范围,创建多个桶, 每个桶代表一个区间范围 创建桶的数量和范围需要尽可能保证元素能够被均匀分布 接下来将元素放进对应的桶中,分别对每个桶中…...
通过Wrangler CLI在worker中创建数据库和表
官方使用文档:Getting started Cloudflare D1 docs 创建数据库 在命令行中执行完成之后,会在本地和远程创建数据库: npx wranglerlatest d1 create prod-d1-tutorial 在cf中就可以看到数据库: 现在,您的Cloudfla…...
视频字幕质量评估的大规模细粒度基准
大家读完觉得有帮助记得关注和点赞!!! 摘要 视频字幕在文本到视频生成任务中起着至关重要的作用,因为它们的质量直接影响所生成视频的语义连贯性和视觉保真度。尽管大型视觉-语言模型(VLMs)在字幕生成方面…...
关于 WASM:1. WASM 基础原理
一、WASM 简介 1.1 WebAssembly 是什么? WebAssembly(WASM) 是一种能在现代浏览器中高效运行的二进制指令格式,它不是传统的编程语言,而是一种 低级字节码格式,可由高级语言(如 C、C、Rust&am…...
UR 协作机器人「三剑客」:精密轻量担当(UR7e)、全能协作主力(UR12e)、重型任务专家(UR15)
UR协作机器人正以其卓越性能在现代制造业自动化中扮演重要角色。UR7e、UR12e和UR15通过创新技术和精准设计满足了不同行业的多样化需求。其中,UR15以其速度、精度及人工智能准备能力成为自动化领域的重要突破。UR7e和UR12e则在负载规格和市场定位上不断优化…...
基于Java Swing的电子通讯录设计与实现:附系统托盘功能代码详解
JAVASQL电子通讯录带系统托盘 一、系统概述 本电子通讯录系统采用Java Swing开发桌面应用,结合SQLite数据库实现联系人管理功能,并集成系统托盘功能提升用户体验。系统支持联系人的增删改查、分组管理、搜索过滤等功能,同时可以最小化到系统…...
Java求职者面试指南:计算机基础与源码原理深度解析
Java求职者面试指南:计算机基础与源码原理深度解析 第一轮提问:基础概念问题 1. 请解释什么是进程和线程的区别? 面试官:进程是程序的一次执行过程,是系统进行资源分配和调度的基本单位;而线程是进程中的…...
tomcat入门
1 tomcat 是什么 apache开发的web服务器可以为java web程序提供运行环境tomcat是一款高效,稳定,易于使用的web服务器tomcathttp服务器Servlet服务器 2 tomcat 目录介绍 -bin #存放tomcat的脚本 -conf #存放tomcat的配置文件 ---catalina.policy #to…...
Ubuntu系统多网卡多相机IP设置方法
目录 1、硬件情况 2、如何设置网卡和相机IP 2.1 万兆网卡连接交换机,交换机再连相机 2.1.1 网卡设置 2.1.2 相机设置 2.3 万兆网卡直连相机 1、硬件情况 2个网卡n个相机 电脑系统信息,系统版本:Ubuntu22.04.5 LTS;内核版本…...
6个月Python学习计划 Day 16 - 面向对象编程(OOP)基础
第三周 Day 3 🎯 今日目标 理解类(class)和对象(object)的关系学会定义类的属性、方法和构造函数(init)掌握对象的创建与使用初识封装、继承和多态的基本概念(预告) &a…...
保姆级【快数学会Android端“动画“】+ 实现补间动画和逐帧动画!!!
目录 补间动画 1.创建资源文件夹 2.设置文件夹类型 3.创建.xml文件 4.样式设计 5.动画设置 6.动画的实现 内容拓展 7.在原基础上继续添加.xml文件 8.xml代码编写 (1)rotate_anim (2)scale_anim (3)translate_anim 9.MainActivity.java代码汇总 10.效果展示 逐帧…...

