【Mysql】【高级篇】【第6章 索引】

【Mysql】【高级篇】【第6章 索引】,第1张

【Mysql】【高级篇】【第6章 索引

https://www.bilibili.com/video/BV1iq4y1u7vj?p=115

1.为什么使用索引





索引的作用:减少磁盘I/O次数

2.索引及其优缺点 2.1 索引概述


排好序的快速查找数据结构

2.2 优点

2.3 缺点


(1)创建和维护耗时
(2)索引站磁盘空间
(3)更新表时,需要维护索引,耗时

3.InnoDB中索引的推演

https://www.bilibili.com/video/BV1iq4y1u7vj?p=116&spm_id_from=pageDriver
声明:索引在具体的存储引擎中实现,不同存储引擎中 索引底层数据结构是不同的;5.5之后默认使用InnoDB,所以这里讲解InnoDB的索引

3.1 索引之前的查找

先来看一个精准匹配的sql:

select 【列名列表】from 表名 where 列名 = xxx;
1.在一个页中查找

底层是链表结构,一个记录对应一个节点 2.在很多页中查找


数据页之间是双链表结构,一页为一个节点一个书架就相当于一个数据页 3.2 设计索引





1.一个简单的索引设计方案







至此,针对数据页做的简易目录就搞定了;这个目录有一个别名,就叫做索引

2.InnoDB中索引方案 1.迭代1次:目录项记录的页



2.迭代2次 :多个目录项记录的页


3.迭代3次

每一个节点表示一次IO


4.B+ Tree


树的层次越低,IO次数越少;因为每一个页是一次IO

3.3 常见索引概念

https://www.bilibili.com/video/BV1iq4y1u7vj?p=118&spm_id_from=pageDriver

1.聚簇索引

所以InnoDB中,.idb文件既有数据也有索引,二者存储在一起,是聚簇索引MyISAM就是非聚簇索引






2.二级索引(辅助索引、非聚簇索引)





3.联合索引

索引只分为聚簇索引和非聚簇索引;
联合索引指的是用多个字段联合作为索引key,因此若不是联合主键,联合索引就是非聚簇索引;



3.4 InnoDB的B+树索引注意事项 1.根页面万年不动

2.内节点目录项唯一性







确保索引唯一,才能找到插入的位置;
所以二级索引的索引其实是非主键+主键

3.一个页面最少有两个记录

4. MyISAM的索引方案

4.1 MyISAM索引原理




4.2 MyISAM和InnoDB对比

5. 索引的代价

6.Mysql数据结构选择的合理性

6.1 全表遍历 6.2 Hash结构






6.3 二叉搜索树




6.4 AVL树


6.5 B-Tree




6.6 B+Tree







6.7 R树

6.8 小结

欢迎分享,转载请注明来源:内存溢出

原文地址:https://www.54852.com/zaji/5717360.html

(0)
打赏 微信扫一扫微信扫一扫 支付宝扫一扫支付宝扫一扫
上一篇 2022-12-17
下一篇2022-12-18

发表评论

登录后才能评论

评论列表(0条)

    保存