1、索引
基本概念:索引是一种为了加速对数据库表中数据行的检索而创建的分散存储的数据结构。
大白话:说白了就是为了快速查找数据的一种分散数据结构。
这里需要知道的是数据存储在磁盘当中,然后每条数据都会对应一个磁盘地址, 索引是单独根相应的关键字和磁盘地址存放,根据相应你要查找的关键词,能马上知道他对应的磁盘地址,知道磁盘地址就能马上快速找到对应的数据。
「hash索引数据结构」
数据结构:数组+链表+红黑树
等值匹配效率高:这个指的是数据在往里放的时候(先计算哈希码值,再计算哈希值)都会生成一个下标,然后直接存入相应的位置,存放的位置都是确定的。
不支持范围匹配:这个指的是关键字在生成哈希码之后就没有所谓的大小比较了,因为可能会出现101<100这种情况。
「二叉树数据结构」别名又叫avl树
根节点:第一次插入的数据就是根节点,后续插入的数据根据根节点进行递归比对。
特点:左小右大,用递归二分法查找法进行查找,可以缩减查询范围。
缺点:如果用二叉树作为自增id的索引结构,那么会形成一个线性链表(单向链表),如果想查最后一个,那么有多少条数据就会递归多少条。
「平衡二叉树」
平衡二叉树:任意节点的子树的高度差都小于等于1(这个不容易理解:比如5下边有3和8节点,然后之后都没有节点了,5到3的距离是1,5到8的距离也是1,1-1=0,小于等于1)
特点:平衡二叉树是一个相对平衡的状态,叶子节点可能存在一个参差不齐的状态。
磁盘块:磁盘块里包含关键字+数据区+子节点饮用
查找数据:命中了数据区,会拿着数据区里的值找直接存储数据的地方。
缺点:树高问题导致他的IO过大,IO利用率不高
「B树」
「B+树」
特点:根结点和枝节点上都没有数据区,数据区全部在叶子结点上。
2、聚簇索引
基本概念: 以主键组织数据的存储,将数据和索引放到一块儿,找到索引就相当于找到了数据。
特点:聚簇索引只有一个,一般是主键id。
3、非聚簇索引
基本概念:数据和索引分开存储,索引存储的是数据所关联的主键值,找到对应的主键进行二次查找。
特点:数据和索引分开存储,要先找索引对应的主键值,再去查询对应的数据。