MySQL--索引

MySQL--索引

索引概述

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

image-20231011103450267

演示

使用全表扫描性能极低

使用二叉搜索树更高效

image-20231011103950059

优缺点

image-20231011104158051

索引结构

  • B+Tree索引
  • Hash索引
  • R-Tree(空间索引)
  • Full-text(全文索引)

image-20231011104425837

存储引擎支持情况

平常所说的索引都是指的B+树索引

image-20231011104616262

二叉树

image-20231011105056017

B-Tree(多路平衡查找树)

n个key就有n+1个指针

image-20231011105329357

演示过程

image-20231011110044205

数据结构可视化

B+树

所有元素都会出现在叶子结点

所有叶子结点通过单向链表相连

image-20231011110356003

演示过程

image-20231011110830902

Mysql当中的B+树

image-20231011110939379

Hash索引

image-20231011111706273

Hash索引特点

image-20231011111926305

思考题

为什么InnoDB存储引擎选择使用B+tree索引结构?

  • 相对于二叉树,层级更少,搜索效率高.

  • 对于B-tree,无论是叶子节点还是非叶子节点都会保存数据,这样导致一页中存储的键值减少,指针跟着减少,要同样保存大量数据,只能增加树的高度,导致性能降低.

  • 相对Hash索引,B+Tree支持范围匹配及排序操作.

posted @ 2023-10-11 11:27  harper886  阅读(6)  评论(0编辑  收藏  举报