索引mysql官方的解释:是一种排好序的数据结构
数据结构
- 二叉树
每个节点最多两颗子树,左子树和右子树是有顺序的,即使有只有一颗子树也是有顺序的,(如果排好顺序的数据放到二叉树中可能变成链表) - 红黑树(平衡二叉树)
典型的实例如hashmap - B树
各节点是存放数据的 - B+树
只有子节点存放数据,省出的空间可以存放更多的索引,且子节点是双向链表便于范围查找
Mysql使用的结构
- inndb和myisam搜索引擎默认是B+树
- Hash
根据数据值的hash存放,查找很快但是不利于范围查找。=或in查询性能高
mysql优化
- 为什么使用B+而不使用B(B+中间层不存在数据可以省出空间存储更多的索引)
- 主键要用自增整形ID,而不使用uuid(uuid一是字符串比较大小没有整形快,二是不自增可能在链表中间插入导致二叉树分叉或重新排布)
- 尽量使用组合索引
评论区