什么是索引
索引帮助MySQL高效获取数据的数据结构(有序)
提高查询效率,同时也降低更新表的速度,如对表进行insert 。update。delete时,效率降低。
索引结构


二叉树缺点:顺序插入时会行成一个链表,查询性能大大降低。大数据量情况下,层级较深,检索速度慢
红黑树:大数据量情况下,层级较深,检索速度慢
B-Tree(多路平衡查找树)

在根节点,叶子节点,以及非叶子节点是具体的数据
以一颗最大度数为5的b-tree为例(每个节点最多存储4个key,5个指针)
注:树的度数是指一个节点的子结点个数。
B+Tree
以一颗最大度数为4的b+tree为例

所有的数据都会出现在叶子节点,上面的非叶子节点起到索引作用
数据结构中叶子节点形成单项链表
hash(哈希索引)
哈希索引就是采用一定的hash算法,将键值换算成新的hash值,映射到对应的槽位上,然后存储在hash表中。
如果两个(或多个)键值,映射到一个相同的槽位上,他们就产生了hash冲突(也称为hash碰撞),可以通过链表来解决

Hash索引特点
1. Hash索引只能用于对等比较(=,in),不支持范围查询(between,>,<,...)
2.无法利用索引完成排序操作
3. 查询效率高,通常只需要一次检索就可以了,效率通常要高于B+tree索引
存储引擎支持
在MySQL中,支持hash索引的是Memory引擎,而innoDB中具有自适应hash功能,hash索引是存储引擎根据B+Tree索引在指定条件下自动构建的。
10万+

被折叠的 条评论
为什么被折叠?



