数据库系统-索引

news2024/12/22 20:55:17

一、什么是索引

字典中的目录,就是生活中的索引

**索引:**定义在存储表基Table础之上,有助于无需检查所有记录而快速定位所需记录的一种辅助存储结构,由一些列存储在磁盘上的索引项index etries组成,每一个索引项又由两部分构成:

  • 索引字段: 索引列串接而成,通常存储了索引字段的每一个值
  • 行指针:包含索引字段值的数据在磁盘上存储的位置

存储索引项的文件为 索引文件,存储表的为 主文件
在这里插入图片描述
索引文件组织方式有两种:

  • 排序索引文件:按照索引字段值的某一种顺序
  • 散列索引文件:使用hash一样的散列函数分配散列桶的方式

索引好坏的评判标准:

  • 访问时间
  • 插入删除时间
  • 空间负载
  • 支持存取的有效性:支持的是属性的限定值(是否符合单一值),属性限定范围的值

1.1 索引的创建

在这里插入图片描述

--在student表中创建基于Sname的索引
create index idxSname on student(sname);
--在student表中创建基于Sname、Sclass的索引
create index indSnamecl on student(sname,sclass);
--删除撤销索引
drop index indexname;

二、索引的分类

2.1 稠密索引稀疏索引

在这里插入图片描述
稠密索引:主文件中每一个记录,都有一个索引项和他对应
稀疏索引(非稠密索引):主文件中部分字段,和他对应。为了后续查找,要求主文件必须按照索引字段排序存储。

主索引:索引 ----> 存储块(包含多条数据)
在这里插入图片描述

2.1.1 稠密索引的定位方式

索引没有重复值
在这里插入图片描述
索引有重复值
在这里插入图片描述
引入桶处理重复值
在这里插入图片描述

2.2 主索引 辅助索引

主索引
通常是对每一个存储块 构建 一个索引 又称为 锚记录 快锚
在这里插入图片描述

辅助索引
定义在主文件的任一或多个非排序字段上的辅助存储结构
中间的存储结构可以用链表

在这里插入图片描述

主索引 辅助索引对比
一个主文件仅可以有一个主索引,但可以有多个辅助索引
主索引通常在主码上
可以利用主索引重新组织主数据
稀疏 稠密
在这里插入图片描述

2.3 其他类型索引

2.3.1 聚簇索引

索引中临近的,主文件中也邻近
在这里插入图片描述

2.3.2 倒排索引

在这里插入图片描述

多级索引:B、B+
多属性索引
散列索引
网格索引

三、B+树索引

多级索引: 索引还可以再建立索引

在这里插入图片描述

3.1 B+树的基本概念

B+树
B树数据结构

在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述

3.2 B+树建立不同的索引

3.2.1 B+树建立键属性稠密索引

索引为主键,索引是稠密的,排序不做要求。指针指向的是记录
在这里插入图片描述

3.2.2 B+树建立键属性稀疏索引(主索引)

索引为主键,稀疏,主文件必须排序
指针指向的是数据块
在这里插入图片描述

3.2.3 用B+树建立非键属性稠密索引

索引为非键属性,稠密的
索引无重复,指针指向的是记录,分 主记录
在这里插入图片描述

3.2.4 用B+树建立非键属性稠密索引

相比上面,索引可以重复
在这里插入图片描述
在这里插入图片描述

3.3 B树 B+树

在这里插入图片描述

3.4 B+ 树的操作

B+树数据结构
在这里插入图片描述
在这里插入图片描述

四、散列索引

用一个散列函数(Hash)可以打散,分裂数据到 桶 当中

多的时候可以有溢出桶
在这里插入图片描述
溢出桶是动态调整的
在这里插入图片描述
所以 Hash不均分的话,就可能退化成链表
在这里插入图片描述

静态散列索引:桶的数目M固定,太大浪费,太小溢出桶多

解决:如下

4.2 可扩展散列索引

桶引入间接层:一个

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

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

相关文章

诊断报文和通讯报文有什么区别?

🍅 我是蚂蚁小兵,专注于车载诊断领域,尤其擅长于对CANoe工具的使用🍅 寻找组织 ,答疑解惑,摸鱼聊天,博客源码,点击加入👉【相亲相爱一家人】🍅 玩转CANoe&…

YOLOv5+双目实现三维跟踪(python)

YOLOv5双目实现三维跟踪(python) 1. 目标跟踪2. 测距模块2.1 测距原理2.2 添加测距 3. 细节修改(可忽略)4. 实验效果 相关链接 1. YOLOV5 双目测距(python) 2. YOLOV7 双目测距(python&#x…

【红队APT】钓鱼篇Office-CVE漏洞RLO隐藏压缩包释放免杀打包捆绑

文章目录 文件后缀-钓鱼伪装-RLO压缩文件-自解压-释放执行Office套件-CVE漏洞-MSF&CSMicrosoft MSDT CVE-2022-30190 代码执行Microsoft MSHTML CVE-2021-40444 远程代码执行CVE-2017-11882 文件后缀-钓鱼伪装-RLO 经过免杀后的exe程序(xgpj.exe),进行重命名&a…

float,flex和grid布局

页面布局往往会影响着整体的结构与项目的样式,通常我们用的布局方式有三种:float,flex,grid 1.float或position布局 1.1概念 首先对于一个页面来说,有浮动流,文档流,文本流这几种模式,而float布局则是脱离…

接口文档设计的12个注意点

前言 我们做后端开发的,经常需要定义接口文档。 最近在做接口文档评审的时候,发现一个小伙伴定义的出参是个枚举值,但是接口文档没有给出对应具体的枚举值。其实,如何写好接口文档,真的很重要。今天给你带来接口文档设计的12个注…

Camera Tuning - MTK pipeline

MTK ISP Pipeline 模块介绍: BPC:坏点矫正 OBC:OB矫正 FUS:此节点处理后,支持视频、预览HDR Digital Gain: 1、LSC:shading矫正 2、WB:白平衡矫正(此步处理后&#xff0…

数字设计笔试Verilog手撕代码 - 累加器

前言 本系列整理关于数字设计的笔试或面试的设计问题,手撕代码继续撕,今天撕一个百度昆仑笔试题的累加器设计。 设计需求 题目来源: 【数字IC/FPGA】百度昆仑芯手撕代码–累加器 已知一个加法器IP,其功能是计算两个数的和&am…

虚幻图文笔记:如何清理Character Creator角色的垃圾数据

书接上文《虚幻图文笔记:Character Creator 4角色通过AutoSetup For Unreal Engine插件导入UE5.1的过程笔记》 在一个项目中我按照上文的步骤导入UE5,但是产生了一些莫名其妙的文件,下面还原一下发现和解决问题的过程。 1. 使用Character Cr…

【C++入门必备知识】

【C入门必备知识】 ①.【命名空间】1.命名空间定义Ⅰ.正常定义命名空间Ⅱ.嵌套定义命名空间Ⅲ.合并命名空间 2.命名空间的使用Ⅰ.命名空间名称及域作用限定符Ⅱ.using成员引入Ⅲ.using namespace名称全部引入 3.注意事项Ⅰ.概念1.全缺省参数2.半缺省参数3.使用规则4.应用场景再…

Baumer工业相机堡盟工业相机如何通过BGAPISDK的软触发实现两相机的同步采集(C#)

Baumer工业相机堡盟工业相机如何通过BGAPISDK的软触发实现两相机的同步采集(C#) Baumer工业相机Baumer工业相机的高速同步采集的技术背景Baumer工业相机通过BGAPI SDK在回调函数里同步保存图像工业相机在回调函数BufferEvent保存工业相机使用软触发进行同…

#Chrome扩展程序开发教程--04:权限申请

#Chrome扩展程序开发教程--04:权限申请 引言1、基本介绍2、权限相关属性2.1、permissions2.2、optional_permissions2.3、host_permissions2.4、optional_host_permissions 3、申请权限4、检查权限5、移除权限 引言 本系列博客旨在带来最新的Chrome扩展程序开发入门…

C语言函数大全-- m 开头的函数

C语言函数大全 本篇介绍C语言函数大全-- m 开头的函数 1. malloc 1.1 函数说明 函数声明函数功能void *malloc(size_t size);用于动态分配内存 参数: size : 需要分配的内存大小(以字节为单位) 返回值: 如果分配成…

【Spring】三大依赖注入(@Autowired,Setter,构造方法)

目录 一、属性注入(Autowired) 1.1 优点分析 1.2 缺点分析 1.2.1 无法实现final修饰的变量注入。 1.2.2 兼容性不好 1.2.3 (可能违背)设计原则问题 1.2.4 代码举例: 1.2.5 出现循环依赖该怎么办? 二…

自然语言模型的哲学小谈

近期,以chatGPT为代表的大语言模型表现非常惊艳。“In Context Learning”、“Instruct”1,以及推理能力,很难不让我们期待未来人工智能的发展,同时冷静思考一下为什么自然语言模型能够取得巨大进步。 文章目录 1 放空大脑从0开始…

Ngiinx反向代理和负载均衡

系列文章目录 目录 系列文章目录一、Nginx的反向代理1.代理含义2.反向代理配置模块 二、1.动静分离2.负载均衡实验 总结 一、Nginx的反向代理 1.代理含义 正向代理 正向代理,指的是通过代理服务器 代理浏览器/客户端去重定向请求访问到目标服务器 的一种代理服务…

ARP协议详解

ARP协议详解 文章目录 ARP协议详解ARP协议介绍ARP抓包ARP包解析 ARP协议介绍 ARP(Address Resolution Protocol)是一种用于将网络层地址(如IP地址)转换为数据链路层地址(如MAC地址)的协议,当一…

软件测试概念篇(下)|开发模型与测试模型

作者:爱塔居 专栏:软件测试 作者简介:大三学生,希望同大家一起进步! 文章简介:主要介绍软件生命周期、瀑布模型和螺旋模型两个开发模型,V模型和W模型两个测试模型 文章目录 目录 文章目录 一、软…

【Go】五、网络编程

文章目录 网络编程1、互联网协议介绍2、Socket编程2.1、socket图解2.2、TCP编程2.3、UDP编程2.4、粘包(❌没有详细看代码,但是大概知道怎么实现) 3、Http编程4、WebSocket编程 网络编程 1、互联网协议介绍 2、Socket编程 2.1、socket图解 1…

这家工作室为网飞、亚马逊、迪士尼都制作过特效

过去的十年里,CGEV工作室通过为电影、电视剧以及Netflix、Amazon、Disney等平台制作大量内容,建立了坚不可摧的声誉。我们采访了CGEV团队,了解他们如何在每一个环节都依赖于ftrack Studio。 CGEV全称Compagnie Gnrale des Effets Visuels&…

C++缺省参数

目录 什么是缺省参数缺省参数分类全缺省参数半缺省参数 缺省参数函数的声明缺省参数的使用 什么是缺省参数 缺省参数是声明或定义函数时,为函数的参数指定一个缺省值。 在调用该函数时,如果没有指定实参,那么形参就会采用缺省值,如果指定了实…