| |
|
开发:
C++知识库
Java知识库
JavaScript
Python
PHP知识库
人工智能
区块链
大数据
移动开发
嵌入式
开发工具
数据结构与算法
开发测试
游戏开发
网络协议
系统运维
教程: HTML教程 CSS教程 JavaScript教程 Go语言教程 JQuery教程 VUE教程 VUE3教程 Bootstrap教程 SQL数据库教程 C语言教程 C++教程 Java教程 Python教程 Python3教程 C#教程 数码: 电脑 笔记本 显卡 显示器 固态硬盘 硬盘 耳机 手机 iphone vivo oppo 小米 华为 单反 装机 图拉丁 |
-> C++知识库 -> [C/C++后端开发学习]17 Mysql索引原理 -> 正文阅读 |
|
[C++知识库][C/C++后端开发学习]17 Mysql索引原理 |
索引、主键及约束索引分类Mysql利用B+树来组织和存储数据,索引用于在B+树中作为key值快速地查找数据。
主键的选择InnoDB 中表是索引组织表,每张表有且仅有一个主键。确定每张表的主键符合以下规律:
约束InnoDB 中提供如下约束: 其中,外键约束
外键定义时,可以设置跟踪父表的行为
索引的实现索引的存储InnoDB 数据存储模型由段、区、页组成。其中段分为数据段、索引段、回滚段等;区大小为 1 MB,一个区由64个连续页构成;而页的默认大小为16k,并非物理页。整体结构如下图所示: 页是 InnoDB 进行磁盘管理的最小单位,可通过 B+树的结构示例如下: 聚集索引聚集索引使用主键为 key 构造B+树,如上面的B+树示例图所示,叶子节点中存放完整的数据行记录。 辅助索引除了主键外,有时我们需要使用其他字段来检索数据。 辅助索引使用非主键的其他 key 构造B+树,其叶子节点不包含行记录的全部数据,而是除了用来排序的 key 之外,还包含了数据对应的主键。辅助索引拿到主键后,再通过聚集索引来取得数据行记录。因为叶子节点只存储key和主键,因此辅助索引的B+树的树高一般要低于聚集索引。 验证实际采用的索引在SQL语句前加上 实例:
执行查询语句:
可以看到采用的索引是刚才定义的组合索引: 索引的工作原则最左匹配原则对于一个组合索引 遇到针对某个字段的条件为 关于最左匹配原则更详细的论述可以参考这篇MySQL最左匹配原则。 覆盖索引从辅助索引中就能找到需要的全部数据的话,那就不需要在再去聚集索引做查找了。比如组合索引中key包含的字段就已经涵盖了查询所需的全部字段。辅助索引的B+树高度一般低于聚集索引,因此这种情况下以覆盖索引进行优化更有优势。 索引失效应该尽可能避免索引失效。
举例: 索引的设计原则
|
|
C++知识库 最新文章 |
【C++】友元、嵌套类、异常、RTTI、类型转换 |
通讯录的思路与实现(C语言) |
C++PrimerPlus 第七章 函数-C++的编程模块( |
Problem C: 算法9-9~9-12:平衡二叉树的基本 |
MSVC C++ UTF-8编程 |
C++进阶 多态原理 |
简单string类c++实现 |
我的年度总结 |
【C语言】以深厚地基筑伟岸高楼-基础篇(六 |
c语言常见错误合集 |
|
上一篇文章 下一篇文章 查看所有文章 |
|
开发:
C++知识库
Java知识库
JavaScript
Python
PHP知识库
人工智能
区块链
大数据
移动开发
嵌入式
开发工具
数据结构与算法
开发测试
游戏开发
网络协议
系统运维
教程: HTML教程 CSS教程 JavaScript教程 Go语言教程 JQuery教程 VUE教程 VUE3教程 Bootstrap教程 SQL数据库教程 C语言教程 C++教程 Java教程 Python教程 Python3教程 C#教程 数码: 电脑 笔记本 显卡 显示器 固态硬盘 硬盘 耳机 手机 iphone vivo oppo 小米 华为 单反 装机 图拉丁 |
360图书馆 购物 三丰科技 阅读网 日历 万年历 2024年11日历 | -2024/11/24 8:30:11- |
|
网站联系: qq:121756557 email:121756557@qq.com IT数码 |