1 索引是什么?索引数据结构有哪些?
1、索引是帮助MySQL高效获取数据的数据结构,可以将其类比成英语字典的目录,当我们要查找某个词时,通过目录(索引)定位到M,再定位y,以此类推找到SQL。如果没有目录,我们需要从整本字典中从头查找,对应的,数据库也是如此,没有了索引,就需要从整个表进行查找。
2、哈希索引、平衡二叉树索引、B树索引、B+树索引等等。
2 哈希索引?
1、hash索引不能使用范围查询,只能用于等值过滤。
2、hash索引不能利用部分索引键查询,对于复合索引,hash索引在计算hash值时,是组合索引键后再一起计算hash值,而不是单独计算hash值。
3、不能避免表扫描。hash索引是索引键通过hash运算之后,将hash值放hash表中,由于不同的索引键存在相同的hash值,所以无法从hash索引中直接完成查询。
3 平衡二叉树索引?
1、树的高度过高,高度越高,查找速度越慢。
2、支持范围查找,但是需要再进行回旋查找
4 B树索引?
B树与二叉树最大的区别在于:它的一个节点可以存储两个值,这就意味着它的树的高度比二叉树更低,查询速度就更快。但是呢,它在进行范围查找的时候仍然存在回旋查找的问题。
5 B+树索引?
B树升级版,与B树相比,新增了叶子节点与非叶子节点关系。所有相邻的叶子节点包含非叶子节点,使用链表进行结合,有一定顺序排序,从而范围查询效率高。比如我们要查询大于5的数据,首先我们定位5的位置,然后直接将5后面的数据全部拿出来即可,因为这是有序链表。