专栏首页用户7737280的专栏索引的数据结构:hash、二叉树、B树
原创

索引的数据结构:hash、二叉树、B树

hash:使用存储在内存中的内容来创建表,而且数据全部存放在内存中。缺点:hash冲突–扰动函数 1.Hash存储需将所有的数据文件添加到内存中,比较浪费内存空间 2.如果所有的查询都是等值查询,那么hash比较快,但范围查找就不太适合 如果使用hash做成的索引,因为需要全部扫描,即使在内存中,天猫转让速度不容乐观。

适合场景:等值查询的场景,就只有KV(Key,Value)的情况,例如Redis、Memcached等这些NoSQL的中间件。

二叉树: ⼆叉树是有序的,所以是⽀持范围查询的,但时间复杂度是O(log(N))。

缺点:二叉树还是红黑树都会因为树的深度过深而造成io次数过多,影响读取效率,以及有可能退化为链表结构。

不推荐使用select * 而使用字段,因为数据是存储在磁盘,并且MySQL服务有筛选数据,每次读取数据都会经过服务筛选,如果都是使用select *就会增加io次数。

B树: 同样的元素,B树的表示要⽐完全平衡⼆叉树要“矮”,原因在于B树中的⼀个节点可以存储多个元素,相对于完全平衡⼆叉树整体的树⾼降低了,磁盘IO效率提⾼了。

https://www.alwdzr.com

从最开始的Hash不⽀持范围查询,⼆叉树树⾼很⾼,只有B树 跟B+有的⼀⽐。

原创声明,本文系作者授权云+社区发表,未经许可,不得转载。

如有侵权,请联系 yunjia_community@tencent.com 删除。

我来说两句

0 条评论
登录 后参与评论

相关文章

  • 索引优化 最左前缀匹配原则

    索引是有序的,index1索引在索引文件中的排列是有序的,首先根据a来排序,然后才是根据b来排序,最后是根据c来排序,像select * from tab 这...

    用户7737280
  • mysql 有4种不同的索引

    主键索引(PRIMARY) 数据列不允许重复,不允许为NULL,一个表只能有一个主键 唯一索引(UNIQUE) 数据列不允许重复,允许为NULL值,一个表允许...

    用户7737280
  • synchronized三种使用方式

    修饰静态方法: 也就是给当前类加锁,会作用于类的所有对象实例,因为静态成员不属于任何一个实例对象,是类成员( static 表明这是该类的一个静态资源,不管...

    用户7737280
  • 关于redis,你需要了解的几点!

    1、是二进制安全的,也就是说,你可以使用任何形式的二进制序列来作为key,比如一个string,或者一个jpg图片的数据,需要说明的是,空字符串也是一个有效的k...

    WindWant
  • Android 内存优化总结&实践

    导语 智能手机发展到今天已经有十几个年头,手机的软硬件都已经发生了翻天覆地的变化,特别是Android阵营,从一开始的一两百M到今天动辄4G,6G内存。然而大部...

    腾讯Bugly
  • JavaScript内存管理机制以及四种常见的内存泄漏解析

    几个星期前,我们开始编写深入研究JavaScript工作原理的系列文章。通过阅读这些文章,你可以了解到JavaScript的构建块及其交互原理,从而能够编写出更...

    CSDN技术头条
  • Node.js中的内存泄漏分析

    内存泄漏(Memory Leak)指由于疏忽或错误造成程序未能释放已经不再使用的内存的情况。如果内存泄漏的位置比较关键,那么随着处理的进行可能持有越来越多的无用...

    FB客服
  • MongoDB与内存管理

    但凡初次接触MongoDB的人,无不惊讶于它对内存的贪得无厌,至于个中缘由,我先讲讲Linux是如何管理内存的,再说说MongoDB是如何使用内存的,答案自然就...

    EltonZheng
  • iOS---内存分析

    用户1941540
  • Linux页框分配器之内存碎片化整理

    指分配给用户的内存空间中未被使用的部分。例如进程需要使用3K bytes物理内存,于是向系统申请了大小等于3Kbytes的内存,但是由于Linux内核伙伴系统算...

    刘盼

扫码关注云+社区

领取腾讯云代金券