理解数据库之索引类型

索引的出现其实就是为了提高数据查询的效率,就像书的目录一样。常见的索引类型有:哈希表、有序数组、搜索树哈希表哈希表是一种以键 - 值(key-value)存储数据的结构,我们只要输入待查找的值即 key,就可以找到其对应的值即 Value。哈希的思路很简单,把值放在数组里,用一个哈希函数把 key 换算成一个确定的位置,然后把 value 放在数组的这个位置。不可避免地,多个 key 值经过...
摘要由CSDN通过智能技术生成

索引的出现其实就是为了提高数据查询的效率,就像书的目录一样。常见的索引类型有:哈希表、有序数组、搜索树

哈希表

哈希表是一种以键 - 值(key-value)存储数据的结构,我们只要输入待查找的值即 key,就可以找到其对应的值即 Value。哈希的思路很简单,把值放在数组里,用一个哈希函数把 key 换算成一个确定的位置,然后把 value 放在数组的这个位置。

不可避免地,多个 key 值经过哈希函数的换算,会出现同一个值的情况。处理这种情况的一种方法是,拉出一个链表,即链表法

哈希表在等值查询时是很快的,但在区间查询时效率却非常慢。由于哈希存储时的数据并不是递增的,在区间查询时就必须全表扫描了。

应用于 Memcached 及其他一些 NoSQL 引擎

有序数组

有序数组在等值查询和区间查询时的性能都非常优秀。由于数组中的元素都是递增的,所以在查询时可以采用二分法查找,这个时间复杂度为O(log(N))。

在范围查询时也是一样,只要找到大于区间的左边,然后向右遍历找到区间的右边。这样的效率也是很快的。

但有序数组也有个缺点是更新插入时效率很差,原因在于新插入一个数据时,数组需维护有序状态,所以会将插入位置后面的数据往后挪,这样所花的成本太高。

所以,有序数组索引只适用于静态存储引擎,比如你要保存的是 2018 年某个城市的所有人口信息,这类不会再修改的数据。

搜索树

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值