【数据库】索引
第七章 数据库索引文章目录第七章 数据库索引前言一、B树与B树二、页三、索引分类1.主键索引2.普通索引3.唯一索引4.全文索引5.聚集索引6.非聚集索引7.索引覆盖四、创建普通索引五、查看索引六、删除索引七、提问总结前言索引相当于是个目录 , 加快查询数据代价 : 消耗额外存储空间 , 引入索引可能会拖慢增删改的速度但通常认为利大于弊一、B树与B树适合索引的数据结构 : B树 , 索引专属数据结构B树(N叉搜索树) , 有地方会写作B-树 , 中间是连字符 , 不是减号 , 还是叫B树B树有N个数 , 会划分出N1个空间 , 默认不会有比最后一个数字更大的了~B树有N个数 , 会划分出N个空间 , 同样默认不会有比最后一个数更大的数字了~并且会通过“双向链表”把叶子节点串起来特点:B树也是一个N叉搜索树每个节点上有N个值,划分出N个区间(不是N1个)期中最后一个元素表示当前子树的最大值(也可以约定第一个元素是最小值)每个子节点中也可以包含N个值同时会把父节点中对应最大值放过来最终效果,叶子节点,就是完整的数据集合~叶子节点通过双向链表连接起来N叉树 , 高度更低(和红黑树比较)B树相比于B树的优势:叶子节点是数据全集并且用链表连接,非常方便可进行范围查询所有的数据都是在叶子上使得叶子节点可以存储完整的数据行非叶子节点只需要存储索引key值即可~ 此时意味着非叶子节点占用空间较小更适合在内存中缓存每次查询都是需要查询到叶子才能够完成查询的 , 中间经历的过程是差不多开销比较次数是相当的)查询的开销比较稳定~~虽然B树有时候会快一点 , 但我们更重视稳定性 !二、页页就是B树上面的节点 , 分为 :数据页 : 叶子节点存储若干个数据行索引页 :非叶子节点只需要存储key /子节点的位置数据库每次从硬盘上读取的时候以页为单位进行读取的~页这样的结构(一个页中保存多组数据)贴合局部性原理局部性原理 : 某个程序使用了某个位置的数据大概率程序接下来还会继续使用这个位置附近位置的其他数据三、索引分类1.主键索引• 当在⼀个表上定义一个主键 primary key时InnoDB使用它作为聚集索引。• 推荐为每个表定义一个主键。如逻辑上没有唯一且非空的列或列集可以使用主键则添加 一个自增列。2.普通索引• 最基本的索引类型没有唯一性的限制。• 可能为多列创建组合索引称为复合索引或组全索引3.唯一索引• 当在一个表上定义一个唯一键 unique 时自动创建唯一索引。• 与普通索引类似但区别在于唯一索引的列不允许有重复值。4.全文索引• 基于文本列(char、varchar 或 text列)上创建以加快对这些列中包含的数据查询和DML操作• 用于全文搜索仅MyISAM和InnoDB引擎支持。5.聚集索引• 与主键索引是同义词• 如果没有为表定义 primary key, InnoDB使用第一个 unique 和 not null 的列作为聚集索引• 如果表中没有 primary key 或合适的 unique 索引InnoDB会为新插入的行生成一个行号并用6字节的 ROW_ID 字段记录 ROW_ID 单调递增并使用 ROW_ID 做为索引。(ROW_ID是数据库控制 , 我们无法干预)6.非聚集索引• 聚集索引以外的索引称为非聚集索引或二级索引• 二级索引中的每条记录都包含该行的主键列以及二级索引指定的列。• InnoDB使用这个主键值来搜索聚集索引中的行这个过程称为回表查询问 : 非聚簇索引非叶子节点存放什么 ?答 : 叶子节点存储索引列的值 主键id , 因此查询到的时候不是直接查到对应的数据行 , 而是对应的主键id , 然后再去主键索引中找到对应的数据行 , 这一过程叫回表7.索引覆盖• 当⼀个select语句使用了普通索引且查询列表中的列刚好是创建普通索引时的所有或部分列这时就可以直接返回数据而不用回表查询这样的现象称为索引覆盖举例 : 要查询id 和name , 二级索存 name 主键索引 id , where条件用了name , 则不需要回表了四、创建普通索引针对空表/小表创建索引都没啥问题.但如果是一个大表(表里已经有千万级别的数据了)再去创建索引这就成了危险操作!!!create index 索引名 on 表名(列名) ;注意 :select * from class where id14 or id15;像上述语句 , 查询时查询条件中使用索引列作为条件索引才会生效select * from class where classid6 ;而这样仍以遍历全表的方式进行查询五、查看索引show index from 表名;六、删除索引删除主键索引alter table 表名 drop primary key ;删除其他索引alter table 表名 drop index 索引名 ;七、提问计算三层树⾼的B树可以存放多少条记录?总结此处省略八百字~~~

相关新闻

C 到 C++ 丝滑过渡教程(入门基础篇)

C 到 C++ 丝滑过渡教程(入门基础篇)

📑 目录 - 一、namespace) 1.1 namespace的价值1.2 namespace的定义1.3 命名空间的使用二、C输入&输出三、缺省参数四、函数重载五、引用 5.1 引用的特性5.2 引用的使用5.3 指针与引用的关系 六、const引用七、inline八、nullptr 一、namespace ### 1.1 name…

2026/8/16 22:13:44 阅读更多 →
退款期证据收集法:多节点测速方法论与实操指南

退款期证据收集法:多节点测速方法论与实操指南

退款期证据收集法:多节点测速方法论与实操指南工具地址:https://www.speedce.com 社区论坛:https://bbs.speedce.com 联系:speedceadsgmail.com写在前面 围绕「退款期证据收集法」,本文提供可落地的技术指南&#xff0…

2026/8/16 22:13:44 阅读更多 →
On-Call 前 5 分钟:收到告警后 SpeedCE 怎么测

On-Call 前 5 分钟:收到告警后 SpeedCE 怎么测

On-Call 前 5 分钟:收到告警后 SpeedCE 怎么测工具地址:https://www.speedce.com 社区论坛:https://bbs.speedce.com 联系:speedceadsgmail.com写在前面 本文围绕「On-Call 前 5 分钟」展开,提供可落地的技术方案&…

2026/8/16 22:13:44 阅读更多 →

最新新闻

LoRA+ControlNet+IP-Adapter:AI绘画精准控制实战工作流详解

LoRA+ControlNet+IP-Adapter:AI绘画精准控制实战工作流详解

1. 从“满屏咒语”到“精准控制”:我的AI绘画进阶之路 相信很多刚开始玩AI绘画的朋友都有过类似的经历:脑子里构思了一个绝妙的画面,人物姿势、表情、服装细节都一清二楚,然后你信心满满地打开Stable Diffusion,开始“…

2026/8/16 22:56:27 阅读更多 →
TensorBoard深度学习可视化实战:从安装到多实验对比

TensorBoard深度学习可视化实战:从安装到多实验对比

1. 项目概述:为什么你需要TensorBoard 如果你正在用TensorFlow、PyTorch或者任何主流的深度学习框架做模型训练,那你大概率经历过这样的场景:盯着终端里不断滚动的损失值和准确率数字,心里没底;想对比两次实验的效果&a…

2026/8/16 22:56:27 阅读更多 →
AI项目规则管理:从CLAUDE.md臃肿到模块化架构设计

AI项目规则管理:从CLAUDE.md臃肿到模块化架构设计

1. 项目概述:为什么你的 AI 项目需要一个清晰的规则管理策略 最近在折腾各种 AI 辅助编程和智能体项目时,我发现一个挺普遍的问题:很多开发者,包括早期的我自己,都喜欢把所有的指令、约束、偏好一股脑地塞进一个叫 CL…

2026/8/16 22:56:27 阅读更多 →
群晖NAS与百度云双向自动备份:Rclone Docker方案全攻略

群晖NAS与百度云双向自动备份:Rclone Docker方案全攻略

1. 项目概述与核心价值最近折腾家里的群晖DS423,终于把和百度云盘之间的自动备份给打通了。这活儿听起来简单,不就是两边传文件嘛,但真做起来,你会发现从方案选择、权限配置到稳定运行,每一步都有不少门道。我最初的想…

2026/8/16 22:56:27 阅读更多 →
Gamma AI:从提示词到专业演示文稿的自动化生成与设计实践

Gamma AI:从提示词到专业演示文稿的自动化生成与设计实践

1. 项目概述:当AI开始“理解”你的演示意图如果你和我一样,经历过无数次深夜对着空白PPT文档发呆,为了一页排版、一个配色、一段逻辑绞尽脑汁,那么“Gamma”这个名字的出现,可能意味着一个时代的终结。它不是一个简单的…

2026/8/16 22:56:27 阅读更多 →
大语言模型监督微调(SFT)实战:从原理到应用,打造专属AI助手

大语言模型监督微调(SFT)实战:从原理到应用,打造专属AI助手

1. 从“续写大师”到“听话助手”:SFT监督微调的本质 如果你玩过早期的大语言模型,比如GPT-2,或者一些开源的基座模型,你可能会有一个困惑:它好像什么都懂一点,天文地理、历史文学都能跟你聊上几句&#xf…

2026/8/16 22:55:26 阅读更多 →

日新闻

基于阿里云与通义千问(Qwen)构建AI应用:从模型调用到生产部署的完整实践指南

基于阿里云与通义千问(Qwen)构建AI应用:从模型调用到生产部署的完整实践指南

如果你是一名开发者,最近可能已经感受到了AI大模型正在从“玩具”变成“生产力工具”的强烈信号。从代码补全到智能Agent,从本地部署到云端API,我们正处在一个技术栈快速重构的节点。然而,面对层出不穷的模型、框架和工具&#xf…

2026/8/16 0:00:54 阅读更多 →
工业通信系统底层逻辑:04 反射——高频能量撞墙之后会发生什么?

工业通信系统底层逻辑:04 反射——高频能量撞墙之后会发生什么?

第四篇:反射——高频能量撞墙之后会发生什么? —— 你以为信号已经过去了,其实它正在回来打你 老Q的现场笔记 第五季,我们正式进入工业神经系统层。这里不再是单个设备的战斗,而是整个工厂“经脉”层面的秩序之战。从这一篇开始,你将第一次看清:看似简单的信号传播,背…

2026/8/16 0:00:55 阅读更多 →
【文章复现】非线性值迭代自适应动态规划(ADP):离散时间非线性系统的策略迭代自适应动态规划算法研究附Matlab代码

【文章复现】非线性值迭代自适应动态规划(ADP):离散时间非线性系统的策略迭代自适应动态规划算法研究附Matlab代码

✅作者简介:热爱科研的Matlab仿真开发者,擅长毕业设计辅导、数学建模、数据处理、建模仿真、程序设计、完整代码获取、论文复现及科研仿真。🍎 往期回顾关注个人主页:Matlab科研工作室👇 关注我领取海量matlab电子书和…

2026/8/16 0:03:55 阅读更多 →

周新闻

基于阿里云与通义千问(Qwen)构建AI应用:从模型调用到生产部署的完整实践指南

基于阿里云与通义千问(Qwen)构建AI应用:从模型调用到生产部署的完整实践指南

如果你是一名开发者,最近可能已经感受到了AI大模型正在从“玩具”变成“生产力工具”的强烈信号。从代码补全到智能Agent,从本地部署到云端API,我们正处在一个技术栈快速重构的节点。然而,面对层出不穷的模型、框架和工具&#xf…

2026/8/16 0:00:54 阅读更多 →
工业通信系统底层逻辑:04 反射——高频能量撞墙之后会发生什么?

工业通信系统底层逻辑:04 反射——高频能量撞墙之后会发生什么?

第四篇:反射——高频能量撞墙之后会发生什么? —— 你以为信号已经过去了,其实它正在回来打你 老Q的现场笔记 第五季,我们正式进入工业神经系统层。这里不再是单个设备的战斗,而是整个工厂“经脉”层面的秩序之战。从这一篇开始,你将第一次看清:看似简单的信号传播,背…

2026/8/16 0:00:55 阅读更多 →
【文章复现】非线性值迭代自适应动态规划(ADP):离散时间非线性系统的策略迭代自适应动态规划算法研究附Matlab代码

【文章复现】非线性值迭代自适应动态规划(ADP):离散时间非线性系统的策略迭代自适应动态规划算法研究附Matlab代码

✅作者简介:热爱科研的Matlab仿真开发者,擅长毕业设计辅导、数学建模、数据处理、建模仿真、程序设计、完整代码获取、论文复现及科研仿真。🍎 往期回顾关注个人主页:Matlab科研工作室👇 关注我领取海量matlab电子书和…

2026/8/16 0:03:55 阅读更多 →

月新闻

免费解锁百度网盘SVIP加速:macOS用户必备的下载提速终极指南

免费解锁百度网盘SVIP加速:macOS用户必备的下载提速终极指南

免费解锁百度网盘SVIP加速:macOS用户必备的下载提速终极指南 【免费下载链接】BaiduNetdiskPlugin-macOS For macOS.百度网盘 破解SVIP、下载速度限制~ 项目地址: https://gitcode.com/gh_mirrors/ba/BaiduNetdiskPlugin-macOS 还在为百度网盘macOS版的龟速下…

2026/8/16 6:00:23 阅读更多 →
终极ncmdump指南:3分钟实现网易云NCM音乐解密与格式转换

终极ncmdump指南:3分钟实现网易云NCM音乐解密与格式转换

终极ncmdump指南:3分钟实现网易云NCM音乐解密与格式转换 【免费下载链接】ncmdump 项目地址: https://gitcode.com/gh_mirrors/ncmd/ncmdump 还在为网易云音乐下载的NCM格式文件无法在其他播放器播放而烦恼吗?ncmdump解密工具帮你轻松解决这个困…

2026/8/16 6:00:24 阅读更多 →
HarmonyOS 应用开发《掌上英语》第81篇: 智能体卡片:为英语学习 App 打造桌面级学习助手

HarmonyOS 应用开发《掌上英语》第81篇: 智能体卡片:为英语学习 App 打造桌面级学习助手

AgentCard 智能体卡片:为英语学习 App 打造桌面级学习助手适用平台:HarmonyOS 7.0 (API 26 Beta)一、引言 HarmonyOS 7.0(API 26 Beta)新增了 AgentCard 智能体卡片能力,这是继 HMAF(鸿蒙智能体框架&#x…

2026/8/16 6:00:27 阅读更多 →