| |
|
开发:
C++知识库
Java知识库
JavaScript
Python
PHP知识库
人工智能
区块链
大数据
移动开发
嵌入式
开发工具
数据结构与算法
开发测试
游戏开发
网络协议
系统运维
教程: HTML教程 CSS教程 JavaScript教程 Go语言教程 JQuery教程 VUE教程 VUE3教程 Bootstrap教程 SQL数据库教程 C语言教程 C++教程 Java教程 Python教程 Python3教程 C#教程 数码: 电脑 笔记本 显卡 显示器 固态硬盘 硬盘 耳机 手机 iphone vivo oppo 小米 华为 单反 装机 图拉丁 |
-> 数据结构与算法 -> 索引详细了解 -> 正文阅读 |
|
[数据结构与算法]索引详细了解 |
目录 索引概述索引是帮助MySQL高效获取数据的数据结构。 MySQL索引原理和数据结构介绍存储位置索引的数据文件也需要持久化存储,存储到磁盘中,当需要时把数据从磁盘中读取到内存中,加快数据的访问(分块读取) 局部性原理:数据和程序都有聚集成群的倾向,之前被查过的数据很快会被再次查询,冷热数据 磁盘预读在数据交换的时候,会有一个基本的逻辑单位,称之为页,一般占用空间是4K/8K,跟操作系统相关,每次在进行数据获取的时候,可以获取页的整数倍(读取数据时,以页的整数倍读取数据,MySQL中innodb的存储引擎读取数据的时候会读取16K(innodb_page_size value=16K)) 数据结构(B+树 )K-V格式的数据:哈希表、树 哈希表hashmap用的红黑树 缺点:
存储引擎(数据文件在存储介质中的不同组织形式)
树(二叉树、BST、AVL、红黑树、B树、B+树)
B树、B+树多叉有序树 degree:阶/度,表示每个节点至多存放多少条记录(degree=4,最多插入3条,插入第四条开始分支) B树: 16:键值,即表中记录的主键 P:指针,存储子节点地址信息 data:数据,即表记录中处主键外的数据 B+树: B+树每个节点可以包含更多的节点,这么做的原因有:
非叶子节点存储key,叶子节点存储key和数据 叶子节点两两指针相互连接(符合磁盘的预读特性),顺序查询性能更高 MySQL数据层数:千万级别三到四层,key要尽可能少的占用空间,所以int比varchar好 MySQL聚簇索引和非聚簇索引区别?判断数据和索引是否放在一起,放在一起就是聚簇索引,不放在一起就是非聚簇索引 在innodb中,数据在进行插入的时候必须要跟某一个索引的值进行绑定,这个值默认是主键,如果没有主键,选择唯一键,没有唯一键选择六字节的rowid。→数据一定跟索引存放(.frm .ibd) 一个表中可以有多少个索引? 索引如果是跟数据放在一起的话,数据会只存储一份 id,name,age,gender,address,id是主键,name是普通索引→ 在整个表中会有两个B+树,主键是跟数据放在一起的,name所在的B+树叶子节点中放置的是id的值。 select * from table where name=?→执行这个语句会走两科B+树,先根据nameB+树检索到id值,再根据id值到idB+树检索到整体行记录 由上得到结论:innodb中一定有聚簇索引(id是聚簇索引,name是非聚簇索引),但是其他索引都是非聚簇索引 MyISAM只有非聚簇索引 关于索引的技术名词
回表
索引覆盖
最左匹配
除了第三条都符合最左匹配(从name到age,先过滤name) 第四条MySQL优化器会优化为先name后age
索引下推
案例1 创建表abc,id主键索引,a、b、c为组合索引idx_1
三个查询都用到了索引 当表中的全部列(除主键索引列外)都是组合索引列的时候,无论怎么查都会用到索引 案例2 创建表abcd,id主键索引,a、b、c为组合索引idx_2,d无索引
案例3 创建表abc,id主键索引,a、b、c为组合索引 idx_2,d为普通索引 idx_3
案例4 创建表abc,id主键索引,a、b、c、d为组合索引idx_2
IOIO是硬件层面的瓶颈,软件方面有IO量和IO次数 减少IO量、减少IO次数,公司禁止写select *(IO量增多) MySQL |
|
|
上一篇文章 下一篇文章 查看所有文章 |
|
开发:
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/25 16:30:18- |
|
网站联系: qq:121756557 email:121756557@qq.com IT数码 |