索引的概念

  • 索引的概念
       1.索引是一种可选的与表相关的数据库对象,用于提高数据的查询效率。
       2.索引是一种有序的数据结构。
       3.如果一个表没有创建索引,则对该表进行查询时需要进行全表扫描;如果创建了索引,则在有条件查询时,系统先对索引进行查询,利用索引可以迅速查询到符合条件的数据。
       4.利用索引之所以能够提高查询效率,是因为在索引结构中保存了索引值及其相应记录的物理地址 ,即ROWID,并且按照索引值进行排序。当查询数据时,系统根据查询条件中的索引信息,利用特定的排序算法在索引结构中很快查询到相应的索引值及其对应 ROWID,根据ROWID可以在数据表中很快查询到符合条件的记录。如图所示:
    在这里插入图片描述

  • ROWID 的概念与作用
       1.在Oracle数据库中,ROWIN 是一个伪列,系统自动产生,能唯一标识每一条数据库行记录的 物理地址 ,通过ROWIN能快速定位到一条行记录。
       2.ROWID由18位16进制数构成。其中前1-6位为数据对象编号,7-9位为数据文件编号,10-15数据块编号,最后 3位为块中行 编号。
       3.因为使用ROWID可以快速定位记录,所以使用ROWIN检索及操作数据,效率最快。

  • 索引分类
       1.根据索引值是否唯一,可分为唯一性索引 和 非唯一性索引
       2.根据索引的组织结构不同,可分为平衡数索引 和 位图索引
       3.根据索引基于的列数不同,可以分为单列索引 和 复合索引

  • 创建索引语法
       1.创建索引使用 create index 索引名称 on 表名
       2.创建非唯一性索引:create index 索引名 on 表名
       3.创建唯一性索引: create unique index 索引名 on 表名
       4.创建复合索引: create index 索引名 on user( username, userage)

  • 创建索引原则
       由于索引作为一个独立的数据库对象存在,占用存储空间,并且需要系统进行维护,因此是否创建索引和创建什么样的索引需要遵循一定的原则。下列情况下 ,适合创建索引:
          1.表中数据量很大
          2.要查询的结果占表中的数据的 2% - %4
          3.经常用来做where条件中的列或者多表连接的列
          4.查询列的数据范围分布很广
          5.查询列中包含大量的Null值,因为空值不包含在索引中
       下列情况不适合创建索引
          1.数据量很小的表
          2.在查询中不常用来作为查询条件的列
          3.频繁更新的表
          4.查询条件中有单行函数时,用不上索引
          5.索引列作为表达式的一部分被使用 时,比如查询的条件是 salary * 12,此时在 salary 列上创建索引是没有效果的。

  • 删除索引
       下面几种情况可以考虑删除索引:
          1.索引不在使用
          2.通过一段事件监视,发现几乎没有查询或只有少数查询会使用该索引。
          3.由于移动了表数据而导致索引失效。
       删除索引后,索引中的数据及定义被删除,索引所占的数据空间被释放,但表中的数据仍然存在 。
          1.如果索引是通过create index 语句创建的,可以使用drop index 语句删除索引,语法为: drop index 索引名
          2.如果索引是定义约束时自动建立的,则禁用约束或删除约束时会自动删除对应的索引。
          3.此外,删除表时会自动删除与其相关的所有索引。

  • 查询索引信息
       1.可以通过查询 数据字典视图 或 动态性能视图 获取索引信息。
       2.数据字典视图 USER_INDEXES 包含索引的基本描述信息和统计信息,包括索引的所有者 、索引名称、索引的类型 、对应表的名称等等。
       3.数据字典视图 USER_IND_COLUMNS 包含索引列的描述信息,包括索引的名称、表的名称和索引列的名称等信息。
       例:select* from USER_INDEXES

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

如若内容造成侵权/违法违规/事实不符,请联系我们进行投诉反馈qq邮箱809451989@qq.com,一经查实,立即删除!

相关文章

应用性能分析工具CPU Profiler

简介 本文档介绍应用性能分析工具CPU Profiler的使用方法,该工具为开发者提供性能采样分析手段,可在不插桩情况下获取调用栈上各层函数的执行时间,并展示在时间轴上。 开发者可通过该工具查看TS/JS代码及NAPI代码执行过程中的时序及耗时情况…

福州装修答疑 | 飘窗能不能砸掉?福州中宅装饰,福州装修

装修中的飘窗是一种常见的装饰元素,它不仅可以增加室内的采光和通风效果,还能为居室增添一份雅致和温馨。然而,很多业主在装修中都会遇到一个共同的问题:装修中的飘窗到底能不能砸?什么情况下可以砸?什么情…

IO流【带有缓冲区的字节输入、输出流;字符输入、输出流 转换流】

day35 学习注意事项 按照流的发展历史去学习注意流与流之间的继承关系举一反三 IO流 继day36 字节流继承图 字节流 应用场景:操作二进制数据(音频、视频、图片) abstract class InputStream – 字节输入流的基类(抽象类&#xff0…

基于R、Python的Copula变量相关性分析及AI大模型应用

在工程、水文和金融等各学科的研究中,总是会遇到很多变量,研究这些相互纠缠的变量间的相关关系是各学科的研究的重点。虽然皮尔逊相关、秩相关等相关系数提供了变量间相关关系的粗略结果,但这些系数都存在着无法克服的困难。例如,…

Anaconda环境命令样例

启动命令行Anaconda Powershell Prompt 查看环境列表 (base) PS C:\Users\Administrator> conda env list # conda environments: # base * G:\ProgramData\anaconda3 MoneyprinterTurbo G:\ProgramData\anaconda3\envs\MoneyprinterTurbo pytorc…

C++ 标准库类型stackqueue

C/C总述:Study C/C-CSDN博客 栈与队列详解(数据结构):栈与队列_禊月初三-CSDN博客 stack(栈) stack的常用函数 函数说明功能说明stack()构造空栈push(T& val)将元素val压入栈中size()返回栈中元素个…

数据结构之二叉树由浅入深最终章!

题外话 我说清明节想放松一下没更新大家信吗? 博客毕竟是文字不是视频,大家如果有不明白的地方,可以使用数形结合的方式,画图一边通过图片,一边通过对照代码进行推导一下,有什么问题都可以私信我或者写在评论区 正题 第一题 寻找二叉树中p,q最近公共祖先 第一题思路 先…

【C++】红黑树讲解及实现

前言: AVL树与红黑树相似,都是一种平衡二叉搜索树,但是AVL树的平衡要求太严格,如果要对AVL树做一些结构修改的操作性能会非常低下,比如:插入时要维护其绝对平衡,旋转的次数比较多,更…

【Claude 3】This organization has been disabled.此组织已被禁用。(Claude无法对话的原因和解决办法)

Claude对话提示 This organization has been disabled.此组织已被禁用。 This organization has been disabled.此组织已被禁用。 This organization has been disabled.此组织已被禁用。 问题截图 问题原因 出现该页面,表示您的账户已经无法使用,可能…

顺序表相关习题

🌈 个人主页:白子寰 🔥 分类专栏:python从入门到精通,魔法指针,进阶C,C语言,C语言题集,C语言实现游戏👈 希望得到您的订阅和支持~ 💡 坚持创作博文…

Jenkins (三) - 拉取编译

Jenkins (三) - 拉取编译 通过Jenkins平台 git 拉取github上项目,通过maven编译并打包。 Jenkins 安装 git 插件 Manager Jenkins -> Plugins -> Available plugins -> Git 打包编译检验 FressStyle 风格编译 New Item输入 item name Spring-Cloud-1…

回溯法(一)——全排列 全组合 子集问题

全排列问题 数字序列 [ l , r ] [l,r] [l,r]​区间内元素的全排列问题 extern int ans[],l,r,num;//num:方案数 extern bool flag[]; void dfs(int cl){//cl:current left,即为当前递归轮的首元素if(cl r 1){//数组已越界,本轮递归结束for…

IDEA2023创建SpringMVC项目

✅作者简介:大家好,我是Leo,热爱Java后端开发者,一个想要与大家共同进步的男人😉😉 🍎个人主页:Leo的博客 💞当前专栏: 开发环境篇 ✨特色专栏: M…

SpringBoot整合Spring Data JPA

✅作者简介:大家好,我是Leo,热爱Java后端开发者,一个想要与大家共同进步的男人😉😉🍎个人主页:Leo的博客💞当前专栏: 循序渐进学SpringBoot ✨特色专栏: MySQL学习 🥭本文内容: SpringBoot整合Spring Data JPA 📚个人知识库: Leo知识库,欢迎大家访问 1.…

智慧牧场数据 7

1 体征数据采集 需求:获取奶牛记步信息 三轴加速度测量:加速度测量计反应的加速向量与当前的受力方向是相反,单位为g 陀螺仪,是用来测量角速度的,单位为度每秒(deg/s) 2000deg/s 相当于1秒钟多少转 1.1…

Vue关键知识点

watch侦听器 Vue.js 中的侦听器(Watcher)是 Vue提供的一种响应式系统的核心机制之一。 监听数据的变化,并在数据发生变化时执行相应的回调函数。 目的:数据变化能够自动更新到视图中 原理: Vue 的侦听器通过观察对象的属性&#…

正排索引 vs 倒排索引 - 搜索引擎具体原理

阅读导航 一、正排索引1. 概念2. 实例 二、倒排索引1. 概念2. 实例 三、正排 VS 倒排1. 正排索引优缺点2. 倒排索引优缺点3. 应用场景 三、搜索引擎原理1. 宏观原理2. 具体原理 一、正排索引 1. 概念 正排索引是一种索引机制,它将文档或数据记录按照某种特定的顺序…

分布式锁实战

4、分布式锁 4.1 、基本原理和实现方式对比 分布式锁:满足分布式系统或集群模式下多进程可见并且互斥的锁。 分布式锁的核心思想就是让大家都使用同一把锁,只要大家使用的是同一把锁,那么我们就能锁住线程,不让线程进行&#x…

【鲜货】企业数据治理的首要一步:数据溯源

目录 背景 一、数据探索溯源的定义 二、数据探索溯源的重要性 1、提高数据质量 2、增强数据信任度 3、促进数据合规性 三、数据溯源的主要方法 1、标注法 2、反向查询法 3、双向指针追踪法 四、数据探索溯源的主要步骤 1、确定溯源目标 2、收集元数据 3、分析数据…

微信小程序uniapp+vue.js旅游攻略系统9krxx

实现了一个完整的旅游攻略小程序系统,其中主要有用户模块、用户表模块、token表模块、收藏表模块、视频信息模块、视频类型模块、景点资讯模块、门票购买模块、旅游攻略模块、景点信息模块、论坛表模块、视频信息评论表模块、旅游攻略评论表模块、景点信息评论表模块…