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

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文件代码着色器文件代码 效果展示 任务要求 本篇文章是中国农业大学虚拟现实课程的一次作业内容,需要对五个茶壶模型使用不同的光照进行着色和渲染,然后旋转展示。 本人的代码也是在其他人的代码的基础上修改来的&#xf…...

【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; 使用官方的这个&#xff1a; vite.config.js中配置 plugins: [vue(),AutoImport({resolvers: [ElementPlusResolve…...

[LeetCode]-876.链表的中间结点-206.反转链表-21.合并两个有序链表-203.移除链表元素

目录 876.链表的中间结点 题目 思路 代码 206.反转链表 题目 思路 代码 21.合并两个有序链表 题目 思路 代码 203.移除链表元素 题目 思路 代码 876.链表的中间结点 876. 链表的中间结点 - 力扣&#xff08;LeetCode&#xff09;https://leetcode.cn/problems/mi…...

通过git多人协调开发

多人协调开发过程中的问题解决。 1.新建远程的仓库分支&#xff1b; 2.拉取线上代码&#xff0c;并在VScode中打开&#xff1b; 3 拉完之后&#xff0c;打开VScode之后的左下角显示的就是当前分支的名称&#xff0c;点击之后即可随意切换&#xff1b; 4 创建本地分支&#xff0…...

CentOS 7 通过 yum 安装 MariaDB(Mysql)

这一版取消了修改配置的操作&#xff0c;改成每次创建数据库时手动指定字符集编码&#xff1b;这一版取消了修改密码的操作&#xff0c;保留 MariaDB 使用无密码的情况&#xff0c;即密码是 ""。 安装步骤&#xff1a; 以下操作都以 root 用户进行操作 以下操作都以 …...

【Solidity】Remix在线环境及钱包申请

好久没有学习区块链方面的知识了&#xff0c;目前通过自学大致掌握了Fabric联盟链的搭建&#xff0c;链码编写、部署&#xff0c;api调用&#xff0c;可以独立开发出一些基于fabric的应用&#xff0c;感觉开发出去中心化的应用还是很有意思的&#xff0c;因为他与之前开发的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)(运行模式)

以前没注意过这个问题&#xff0c;我有2台电脑&#xff0c;都能登录eda专业版&#xff0c;但是一台是全在线模式&#xff0c;另外一台是半离线模式&#xff0c;虽然是同一个账号&#xff0c;但是打开里面的工程会发现&#xff0c;两边的工程完全不同&#xff0c;因为一台的工程…...

349.两个数组的交集+350.两个数组的交集II(set/multiset)

目录 一、349.两个数组的交集 二、350.两个数组的交集II 一、349.两个数组的交集 349. 两个数组的交集 - 力扣&#xff08;LeetCode&#xff09; class Solution { public:vector<int> intersection(vector<int>& nums1, vector<int>& nums2) {//…...

数据结构与算法之排序: 桶排序 (Javascript版)

排序 排序&#xff1a;把某个乱序的数组变成升序或降序的数组 (这里用数组来做举例) 桶排序 根据元素的取值范围&#xff0c;创建多个桶, 每个桶代表一个区间范围 创建桶的数量和范围需要尽可能保证元素能够被均匀分布 接下来将元素放进对应的桶中&#xff0c;分别对每个桶中…...

MySQL 隔离级别:脏读、幻读及不可重复读的原理与示例

一、MySQL 隔离级别 MySQL 提供了四种隔离级别,用于控制事务之间的并发访问以及数据的可见性,不同隔离级别对脏读、幻读、不可重复读这几种并发数据问题有着不同的处理方式,具体如下: 隔离级别脏读不可重复读幻读性能特点及锁机制读未提交(READ UNCOMMITTED)允许出现允许…...

【RockeMQ】第2节|RocketMQ快速实战以及核⼼概念详解(二)

升级Dledger高可用集群 一、主从架构的不足与Dledger的定位 主从架构缺陷 数据备份依赖Slave节点&#xff0c;但无自动故障转移能力&#xff0c;Master宕机后需人工切换&#xff0c;期间消息可能无法读取。Slave仅存储数据&#xff0c;无法主动升级为Master响应请求&#xff…...

MySQL中【正则表达式】用法

MySQL 中正则表达式通过 REGEXP 或 RLIKE 操作符实现&#xff08;两者等价&#xff09;&#xff0c;用于在 WHERE 子句中进行复杂的字符串模式匹配。以下是核心用法和示例&#xff1a; 一、基础语法 SELECT column_name FROM table_name WHERE column_name REGEXP pattern; …...

图表类系列各种样式PPT模版分享

图标图表系列PPT模版&#xff0c;柱状图PPT模版&#xff0c;线状图PPT模版&#xff0c;折线图PPT模版&#xff0c;饼状图PPT模版&#xff0c;雷达图PPT模版&#xff0c;树状图PPT模版 图表类系列各种样式PPT模版分享&#xff1a;图表系列PPT模板https://pan.quark.cn/s/20d40aa…...

Linux 内存管理实战精讲:核心原理与面试常考点全解析

Linux 内存管理实战精讲&#xff1a;核心原理与面试常考点全解析 Linux 内核内存管理是系统设计中最复杂但也最核心的模块之一。它不仅支撑着虚拟内存机制、物理内存分配、进程隔离与资源复用&#xff0c;还直接决定系统运行的性能与稳定性。无论你是嵌入式开发者、内核调试工…...

基于SpringBoot在线拍卖系统的设计和实现

摘 要 随着社会的发展&#xff0c;社会的各行各业都在利用信息化时代的优势。计算机的优势和普及使得各种信息系统的开发成为必需。 在线拍卖系统&#xff0c;主要的模块包括管理员&#xff1b;首页、个人中心、用户管理、商品类型管理、拍卖商品管理、历史竞拍管理、竞拍订单…...

华为OD机考-机房布局

import java.util.*;public class DemoTest5 {public static void main(String[] args) {Scanner in new Scanner(System.in);// 注意 hasNext 和 hasNextLine 的区别while (in.hasNextLine()) { // 注意 while 处理多个 caseSystem.out.println(solve(in.nextLine()));}}priv…...

并发编程 - go版

1.并发编程基础概念 进程和线程 A. 进程是程序在操作系统中的一次执行过程&#xff0c;系统进行资源分配和调度的一个独立单位。B. 线程是进程的一个执行实体,是CPU调度和分派的基本单位,它是比进程更小的能独立运行的基本单位。C.一个进程可以创建和撤销多个线程;同一个进程中…...

【 java 虚拟机知识 第一篇 】

目录 1.内存模型 1.1.JVM内存模型的介绍 1.2.堆和栈的区别 1.3.栈的存储细节 1.4.堆的部分 1.5.程序计数器的作用 1.6.方法区的内容 1.7.字符串池 1.8.引用类型 1.9.内存泄漏与内存溢出 1.10.会出现内存溢出的结构 1.内存模型 1.1.JVM内存模型的介绍 内存模型主要分…...

【Linux手册】探秘系统世界:从用户交互到硬件底层的全链路工作之旅

目录 前言 操作系统与驱动程序 是什么&#xff0c;为什么 怎么做 system call 用户操作接口 总结 前言 日常生活中&#xff0c;我们在使用电子设备时&#xff0c;我们所输入执行的每一条指令最终大多都会作用到硬件上&#xff0c;比如下载一款软件最终会下载到硬盘上&am…...