搜索热词
1、索引是什么
索引(Index)是帮助MysqL高效获取数据的数据结构。我们可以简单理解为:索引的目的在于提高查询效率。
2、原理
索引的数据结构是B+树,原理图如下
关于B+树的详细介绍,可以参见文章下面的参考。
精简描述:B+树是为了磁盘或其他直接存储辅助设备设计的一种平衡查找树。在B+树中,所有记录节点都是按键值的大小顺序存放在叶子节点上,各叶子节点直接由指针进行连接。
B+树中的B不是代表二叉(binary),而是代表平衡(balance),因为B+树是从最早的平衡二叉树演化而来,但是B+树不是一个二叉树。
索引的内部也是一张表,索引组织表,索引的构建需要使用到磁盘空间跟内存空间,并不是索引越多越好,太多反而导致性能下降,建议一张表最多不要超过8个索引。
3、索引分类
下面的分类维度没有标准,但一般索引我们会比较关注聚集索引跟非聚集索引。
3.1 聚集索引
聚集索引(clustered index)是按照每张表的主键构造一棵B+树,同时叶子节点中存放的即为整张表的行记录数据,也将聚集索引的叶子节点称为数据页。
由于实际的数据页只能按照一棵B+树进行排序,因此每张表只能拥有一个聚集索引。
主键是一个聚集索引