B+树是在B树基础上改造的,他的数据都在叶子节点,同时叶子节点还加了指针。
每个节点的key是升序排列
一个例子
降低树的规模
,从未降低了IO操作次数,提高了查找速度,改善了性能;【我们不用红黑树,因为红黑树子节点只有两个,做到了树的平衡,但树的规模还是没B树限制的好】局部的中序遍历
,由于B树的每个节点都存储数据,所以可能要跨层访问,这就意味着要在硬盘的页面之间进行多次访问【节点存储在不同的页面中】,降低了性能。而B+树由于所有数据都在叶子结点,不用跨层,同时由于有链表结构,只需要找到首尾,通过链表就能把所有数据取出来了。这和业务场景有关,如果只查找一个值的话,hash是一个很好的选择,但数据库经常会查多条,这时候由于B+树索引有序,并且又有链表相连,它的查询效率比hash就快很多了
【同样查询n条数据,hash需查n次,即O(n) ;
B+是O(log n):查询一次是O(log n),但查询一次后,由于B+树所有数据都在叶子结点,不用跨层,同时由于有链表结构,只需要找到首尾,通过链表就能把所有数据取出来了,不在花费时间】。
而且数据库中的索引一般是在磁盘上,数据量大的情况可能无法一次装入内存,B+树的设计可以允许数据分批加载,同时树的高度较低,提高查找效率。
4)主键索引:某一个属性组能唯一标识一条记录;索引列的值必须唯一,且不能为null,主键索引只能有一个,唯一索引可能有多个
一个字段设置为主键后,数据库会自动为其建立主键索引
5)常规(普通)索引:
快速定位特定数据
###查看索引
查询
操作。
【在更。。。。。。。】