羊蹓狼 发表于 2022-9-17 08:37:43

索引

索引

索引是什么

一种数据结构,帮助我们快速的定位元素
索引的分类

主键索引
唯一索引
普通索引
联合索引(最左匹配原则)

[*]对某字段进行范围会使索引失效
全文索引
索引的数据结构

如何让性能优秀

[*]减少I/O次数
[*]避免回旋
哈希表

根据key的hash算法找到存储的位置

[*]无法范围查找,底层数据结构散列存储数据
平衡二叉树:

自动选取一个中间值,左边的子树小,右边的子树大

[*]树的深度高
[*]回旋
https://img2022.cnblogs.com/blog/2351671/202209/2351671-20220914181748029-412933006.png
B树

一个节点可以有多个值,一个节点下有多个多个节点,冗余节点

[*]减少了树的高度,还是回旋
https://img2022.cnblogs.com/blog/2351671/202209/2351671-20220914181904270-337813102.png
 
B+树

基于B树+链表,重新定义了叶子节点和非叶子节点的关系,叶子节点存储key,非叶子节点存储key和值,所有的非叶子节点通过链表进行连接

[*]不用回旋
[*]冗余节点,内存
https://img2022.cnblogs.com/blog/2351671/202209/2351671-20220914181930730-1195160485.png
 
聚簇索引和非聚簇索引

聚簇索引主键索引,innodb采用B+树存储主键(key),行数据(value)
非聚簇索引普通索引,innodb采用B+树存储字段(key),主键(value)

免责声明:如果侵犯了您的权益,请联系站长,我们会及时删除侵权内容,谢谢合作!
页: [1]
查看完整版本: 索引