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

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

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

相关文章

第22期 | GPTSecurity周报

GPTSecurity是一个涵盖了前沿学术研究和实践经验分享的社区,集成了生成预训练 Transformer(GPT)、人工智能生成内容(AIGC)以及大型语言模型(LLM)等安全领域应用的知识。在这里,您可以…

前端下载后端文件流,文件可以下载,但是打不开,显示“文件已损坏”的问题分析与解决方案

目录 场景还原相关代码开发者工具 - 网络请求记录 问题排查定位改bug 总结 场景还原 我在前端使用axios接收后端xlsx表格文件流并下载,xlsx文件能够下载成功,但是打开却显示文件无法打开 相关代码 请求API封装:Content–Type以及responseType经核对均…

虚拟机Linux-Centos系统网络配置常用命令+Docker 的常用命令

目录 1、虚拟机Linux-Centos系统网络配置常用命令2、Docker 的常用命令2.1 安装docker步骤命令2.2 在docker容器中安装和运行mysql 2、dockerfile关键字区别(ADD/COPY,CMD/ENTRYPOINT) 1、虚拟机Linux-Centos系统网络配置常用命令 进入网络配置文件目录 cd /etc/sysconfig/ne…

【webrtc】 对视频质量的码率控制的测试与探索

目录 环境设置 transport-cc goog-remb (webrtc中的两种码率算法) 修改成remb算法 测试 效果 后续 可参考工程 环境设置 要到meshx上操作 telnet 112 然后执行factory_env show |grep meshx_ip 之后telnet meshx_ip 用户名admin 密码****.119 执行一下r…

Leetcode-88 合并两个有序数组

使用内置排序函数&#xff0c;时间复杂度On^2 class Solution {public void merge(int[] nums1, int m, int[] nums2, int n) {int j0,im;while(j<n){nums1[i]nums2[j];}Arrays.sort(nums1);} }新建一个临时数组用于放排序后的元素&#xff0c;再将临时数组赋值给nums1&…

【软件STM32cubeIDE下H73xx配置串口uart1+中断接收/DMA收发+HAL库+简单数据解析-基础样例】

#【软件STM32cubeIDE下H73xx配置串口uart1中断接收/DMA收发HAL库简单数据解析-基础样例】 1、前言2、实验器件3-1、普通收发中断接收实验第一步&#xff1a;代码调试-基本配置&#xff08;1&#xff09;基本配置&#xff08;3&#xff09;时钟配置&#xff08;4&#xff09;保存…

大神接力 | YOLOv4算法超详细解析(包括诞生背景+论文解析+技术原理等)

前言&#xff1a;Hello大家好&#xff0c;我是小哥谈。YOLOv4论文的发表背景是在原作者声名放弃更新YOLO算法后&#xff0c;俄罗斯的Alexey大神扛起了YOLOv4的大旗&#xff0c;因此&#xff0c;其诞生背景是为了进一步提高目标检测算法的性能和精度。本篇文章就简单讲述一下YOL…

Java 8 新特性 Stream 的使用场景(不定期更新)

方便在写代码的过程中直接使用&#xff0c;好记性不如好文章&#xff0c;直接 CV 改了直接用。提高 办&#xff08;摸&#xff09;公&#xff08;鱼&#xff09;效&#xff08;时&#xff09;率&#xff08;间&#xff09;&#xff0c; 不然就直接问 GPT 也不是说不行。 只符合…

Mysql学习文档笔记

文章目录 基础篇通用语法及分类DDL&#xff08;数据定义语言&#xff09;数据库操作注意事项 表操作 DML&#xff08;数据操作语言&#xff09;添加数据注意事项 更新和删除数据 DQL&#xff08;数据查询语言&#xff09;基础查询条件查询聚合查询&#xff08;聚合函数&#xf…

【C语法学习】18 - fread()函数

文章目录 1 函数原型2 参数3 返回值4 示例 1 函数原型 fread()&#xff1a;从与指定流stream相关联的二进制文件中读取数据块储存在str指向的内存空间中&#xff0c;函数原型如下&#xff1a; size_t fread(const void *ptr, size_t size, size_t count, FILE *stream)2 参数…

[动态规划] (七) 路径问题:LCR 166.剑指offer 47. 珠宝的最高价值

[动态规划] (七) 路径问题&#xff1a;LCR 166./剑指offer 47. 珠宝的最高价值 文章目录 [动态规划] (七) 路径问题&#xff1a;LCR 166./剑指offer 47. 珠宝的最高价值题目解析解题思路状态表示状态转移方程初始化和填表顺序 返回值代码实现总结 LCR 166. 珠宝的最高价值 题目…

python web框架 flask基础入门教程

python web框架 flask基础入门教程 今天我们写一个flask基础入门教程&#xff0c;当然也会覆盖很多重要的知识点&#xff0c;在这篇博客中&#xff0c;我们主要会讲解如下内容&#xff1a; 1、通过flask框架向web传输和接收参数 2、实现静态图片插入和图书上传 3、实现搭建…

宝塔面板使用Supervisor进程守护插件,配置守护Mysql的操作教程。

本篇文章主要讲解&#xff0c;在宝塔面板中使用Supervisor进程守护插件&#xff0c;配置守护Mysql的操作教程。 作者&#xff1a;任聪聪 日期&#xff1a;2023年11月5日 一、安装守护进程插件 安装插件一、进程守护插件 安装说明&#xff1a;在软件商店中搜索“进程守护”&am…

2019 ICPC 银川题解(A,H,L)

赛时没发挥好6题金尾&#xff08;rank38&#xff09;&#xff0c;剩下很多能写的题&#xff0c;其中四个dp&#xff0c;傻眼ing The 2019 ICPC Asia Yinchuan Regional Contest A Girls Band Party&#xff08;背包&#xff09; 有点迷惑的题&#xff0c;当时看只要 5 5 5 张…

电脑时间校对怎么做?看这里,分享4个方法!

“我的电脑时间总是和手机的时间不一样&#xff0c;应该是电脑的时间不准确了&#xff0c;想知道大家遇到这种情况时是如何校对电脑时间的呀&#xff1f;” 随着电脑在我们日常生活中的广泛应用&#xff0c;确保电脑时间准确性变得至关重要。电脑时间校对不仅有助于同步文件和通…

小程序如何设置自动预约快递

小程序通过设置自动预约功能&#xff0c;可以实现自动将订单信息发送给快递公司&#xff0c;快递公司可以自动上门取件。下面具体介绍如何设置。 在小程序管理员后台->配送设置处&#xff0c;选择首选配送公司。为了能够支持自动预约快递&#xff0c;请选择正常的快递公司&…

S4.2.4.5 Fast Training Sequence (FTS)

一 本章节主讲知识点 1.1 FTS的用途和实现注意 二 本章节原文翻译 Fast Training Sequence (FTS) 主要用于在L0s->L0跳转的过程中&#xff0c;让Receiver 检测到电气空闲退出&#xff0c;以及实现bit 和 symbol lock。 2.1 Gen1 and Gen2 速率 对于Gen1/2 FTS的组成如下…

自定义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…

docker安装(超详细)

一.引言 本安装教程参考Docker官方文档&#xff0c;地址如下&#xff1a;https://docs.docker.com/engine/install/centos/ 二.卸载旧版docker(第一次安装可忽略) 首先如果系统中已经存在旧的Docker&#xff0c;则先卸载&#xff1a; yum remove docker \docker-client \docker…

【漏洞复现】Django -SQL注入漏洞复现(CVE-2019-14234)

感谢互联网提供分享知识与智慧&#xff0c;在法治的社会里&#xff0c;请遵守有关法律法规 复现环境&#xff1a;Vulhub 环境启动后&#xff0c;访问http://192.168.80.141:8000即可看到Django默认首页 漏洞复现 首先登陆后台http://192.168.80.141:8000/admin/&#xff0c;用…