常见索引模型
数据库的索引模型有很多种,其中比较常见、简单的数据结构是哈希、有序数组和搜索树
哈希表
哈希表是一种key-value结构的数据结构,key为待查找的值,用一个hash函数计算key的哈希值,作为存储位置,value就放在这个位置,因为多个key可能计算出来hash值相同,即占用相同的位置,所以value可以是一个链表,里面存着多个值。
image
如图,根据用户id计算hash值,可能user2、user5两个用户计算出来的hash值相同,所以他们的数据以链表的形式存在于value。如果要获取user6的信息,根据 hash(user6.id) 得出hash值为3,则在3这个value中遍历,获取user6的信息。 一个好的hash函数计算得到的值应该是非常分散的,不容易重复,这样会减少遍历的过程,增加查询速度。
由于hash存储位置的值不是递增的,而是散列的,因此插入数据时速度是很快的,但是如果要查找区间内的值 [user3,user9],只能挨个从user3开始遍历查找,所以hash表这种结构适合于等值查询的场景,不适合区间查询
有序数组
有序数组对于上述区间查询这一场景有优势,存储状态如图: