【数据库】索引知识

版权声明:本文为博主原创文章,转载请注明出处。 https://blog.csdn.net/ca1m0921/article/details/89890599

数据库的基本知识了解之后,就要学习索引了。 说句实话,没学索引,我真的不敢说我 熟悉数据库。

Mysql 的数据存储结构:

每个数据页由7部分组成,每个数据页的用户记录依靠一个单向链表维护,数据页之间依靠一个双向链表维护。

索引 通过 添加 目录记录页,将无序的数据 变成有序的数据。

一篇文章可以解释的清清楚楚: MYSQL的索引

mysql的数据存储依靠 页 来存储。页分为 目录记录页和用户数据记录页。

通过 record_type 的值来区分。0:用户记录     1:目录记录     2: 最小记录     3:最大记录

 也就是是个B+数的结构。B+树属于 平衡二叉树的一种,通过二分法来查询数据,效率极高。

索引分为 : 聚集索引 和 非聚集索引

聚集索引: 以主键作为索引的方式。维护一个B+树。叶子节点是 用户数据。

查询过程,通过最高级的 目录记录页开始 二分法查询,直到查询到 叶子节点,找到对应的主键的用户记录。

非聚集索引:以非主键作为索引的方式。也称为二级索引。

非聚集索引,维护一颗 非主键 的 B+树, 在查询某个用户记录时,通过 某个字段,比如 name,开始二分查找B+树,一层一层查找,直到叶子节点,此时找到的 是   name 和 id(主键) 的一个对应关系,而没有其他的用户数据。

此时 需要通过 查找到的 id 作为主键,到 主键的B+树,查询 记录,同样 二分法一层一层 查找 目录记录页,直到 用户数据页,找到 对应的用户记录。

联合索引:就是多个字段组成的索引。比如: c2 、c3字段。建立B+树的时候,先按照c2 排序,只要c2相等的时候,才按照c3 排序。

MyISAM 的索引方案

创建和删除索引 SQL语句

猜你喜欢

转载自blog.csdn.net/ca1m0921/article/details/89890599