当前位置:网站首页>Mysql 索引
Mysql 索引
2022-04-23 06:23:00 【cqwoniu】
1、什么是索引
在关系数据库中,索引是一种单独的、物理的对数据库表中一列或多列的值进行排序的一种存储结构,它是某个表中一列或若干列值的集合和相应的指向表中物理标识这些值的数据页的逻辑指针清单。索引的作用相当于图书的目录,可以根据目录中的页码快速找到所需的内容。
2、索引的分类
a、主键索引:设置为主键后数据会自动建立索引,innodb为聚簇索引。
b、单值索引:即一个索引包含单个列,一个表可以有多个单列索引,也叫普通索引
c、唯一索引:索引的值必须唯一,但允许有空值,它和主键索引的最大区别是主键索引不能有空值,但是唯一索引允许有一个空值
d、复合索引:即一个索引包含多个列
e、全文索引:innodb不支持,fulltext类型。
3、索引的原理
底层采用的是B+树的结构,只有叶子结点才能存储key和数据,非叶子结点只能存放key.
B+树每个节点可以包含更多的节点,这样降低了树的高度,数据范围变为多个区间,区间越多,数据检索速度越快。叶子节点两两连指针相互连接,符合磁盘的预读特性,顺序查询性能更高。
为什么没有选择B树,因为B树要求非叶子结点必须存放数据。
4、聚簇索引和非聚簇索引的区别
聚簇索引将数据存储与索引放到了一块,索引结构的叶子结点保存了数据,主键索引一定是聚簇索引;
非聚簇索引将数据与索引分开存储,索引结构的叶子结点指向了数据对应的位置。
在innodb中,在聚簇索引上创建的索引称之为辅助索引,非聚簇索引称之为辅助索引。
5、聚簇索引的优势,聚簇索引需要注意什么,为什么主键通常建议自增id
6、什么情况下无法利用索引
7、Innodb与Myisam的区别
版权声明
本文为[cqwoniu]所创,转载请带上原文链接,感谢
https://blog.csdn.net/cqwoniu/article/details/124151767
边栏推荐
猜你喜欢
随机推荐
记录一些npm 有关的问题(杂乱记录)
[2020WC Day2]F.采蘑菇的克拉莉丝(子树和查询、轻重儿子思想)
菜菜的并发编程笔记 |(五)线程安全问题以及Lock解决方案
2.限定查询
F-牛妹的苹果树(直径合并)
[hdu6833]A Very Easy Math Problem(莫比乌斯反演)
快速傅里叶变换FFT简明教程
特殊成员与魔法方法
关于'enum'枚举类型以及结构体的问题。
可视化常见绘图(四)柱状图
10.更新操作
菜菜的刷题日记 | 238.除自身以外数组的乘积
Source Insight 4.0常见问题
[self motivation series] you'll never be ready
按需引入vant组件
[ACM-ICPC 2018 沈阳赛区网络预赛] J.Ka Chang (分块+dfs序)
12.约束
VScode
使用el-popconfirm和el-backtop不生效
技能点挖坑