索引概念和索引底层数据结构

什么是索引

索引(index) 是帮助 MySQL 高效获取数据的有序数据结构。

在数据之外,数据库系统还维护着满足特定查找算法的数据结构(InnoDB 中为 B+ 树),这些数据结构以某种方式引用(指向)数据。这样就可以在这些数据结构上实现高级查找算法,这种数据结构就是索引。

核心作用:把无序数据变成有序结构,将查找从 O(n) 全表扫描降为 O(log n) 树查找。

索引底层数据结构

B+ 树用"非叶子只存指针 + 叶子存数据 + 叶子连成双向链表"的设计,换来了更矮的树、更少的 I/O、更方便的区间查询------这正是 InnoDB 选它做索引结构的原因。

  • 阶数更多,路径更短:非叶子节点不存数据,只存 key 和指针,同样磁盘页能容纳更多 key,所以阶数更高、树更矮,查找路径更短。

  • 磁盘读写代价更低:相比 B 树,非叶子节点只存储指针,叶子节点才存储数据(聚簇索引存整行,二级索引存主键),单次 I/O 能读入更多索引项。

  • 便于区间查询和排序 :叶子节点之间用双向链表相连,范围查询只需顺着链表扫描,无需回溯上层节点。

相关推荐
老师我太想进步了202612 小时前
【数据结构-3】算法美学之降复杂度
数据结构·算法
w_zero_one1 天前
算法--构造
java·数据结构·算法
lisw051 天前
互联网上的数据结构可视化!
数据结构·信息可视化
老师我太想进步了20261 天前
【数据结构-1】例解算法复杂度
数据结构·算法
YSL0701241 天前
一文通关-----排序
数据结构·算法
夜不会漫长2 天前
C++:红黑树
数据结构·算法
冻柠檬飞冰走茶2 天前
PTA刷题集之Airline Routes(C语言实现)
c语言·开发语言·数据结构·算法
736c2 天前
固件开发岗算法
数据结构·算法
冻柠檬飞冰走茶2 天前
PTA刷题集之Battle Over Cities - Hard Version(C语言实现)
c语言·开发语言·数据结构·算法
PaperAccept2 天前
【研知有术论文发表】材料科学一区期刊,影响因子30+的纳米科技SCI,审稿严格但有效率
大数据·数据结构·科技·量子计算