首页
学习
活动
专区
圈层
工具
发布
    • 综合排序
    • 最热优先
    • 最新优先
    时间不限
  • 来自专栏LeetCode

    BTree

    image.png mysql主要是B+ 和hash结构 image.png image.png image.png image.png image.png image.png image.png 更适合做范围查询 可以横向 image.png 链表 image.png 若想利用索引达到预想的提高查询速度的效果,我们在添加索引时,必须遵循以下原则 #1.最左前缀匹配原则,非常重要的原则, create index ix_name_email on s1(

    66300发布于 2019-03-04
  • 来自专栏CSDNToQQCode

    Btree详解

    Btree详解 B树(B-Tree)是一种自平衡的多叉树结构,它能在对数时间内完成搜索、插入和删除操作。B树广泛应用于文件系统、数据库、操作系统等领域。 Btree结构 B树(B-tree)是一种自平衡的树形数据结构,它能够保持数据有序,且能够在对数时间内进行搜索、插入和删除等操作。B树常用于数据库和文件系统中存储大量的数据。

    96040编辑于 2023-10-11
  • 来自专栏数据小冰

    BTree源码分析

    本文是介绍BTree文章的下篇,在BTree实现原理上篇主要介绍实现原理,下篇主要介绍btree源码实现。 BTree结构 BTree结构体定义 type BTree struct { // BTree的度 degree int // BTree中元素的数量 length int root *BTree) 对BTree进行克隆,得到一颗新的BTree,与被克隆的BTree共享node节点 (t *BTree) ReplaceOrInsert(item Item) 向BTree中插入元素,如果插入的元素已存在 ,则更新 (t *BTree) Delete(item Item) 从BTree中删除给定的元素 (t *BTree) DeleteMin() Item 删除BTree中最小的元素 (t *BTree) (t *BTree) Get(key Item) Item 返回BTree中元素为key的元素 (t *BTree) Min() Item 返回BTree中最小的元素 (t *BTree) Max()

    1K21编辑于 2022-08-15
  • 来自专栏数据小冰

    BTree实现原理

    小编打算用两篇文章讲解BTree内容,本文上篇主要介绍实现原理,下篇主要介绍btree源码实现。 BTree定义 BTree和B-Tree都是指B树,不要把B-Tree理解成了B-树。 BTree使用场景 BTree常用于实现数据库索引,例如在MongoDB中的索引是用BTree实现的,MySQL中的innodb存储引擎用B+树存储索引信息。 而BTree降低了树的高度,减少了磁盘读取次数,所以数据库的索引采用BTree或B+树实现。 BTree实现原理 BTree的核心操作包含树的创建,树中节点的删除,元素的查找。 向BTree中插入38, 度为3的BTree,每个节点最多有2个key, 此时节点有3个key,不满足BTree性质,将中间的key提升到父节点中,调整之后符合BTree定义,插入操作结束。 向BTree中插入1 向BTree中插入10,此时1|4|10节点不满足BTree性质,需要进行分裂,将4插入到父节点中,插入之后,父节点4|30|48也不满足BTree性质,继续对其进行分裂。

    1.8K31编辑于 2022-08-15
  • 来自专栏golang算法架构leetcode技术php

    golang源码分析:btree

    接着我们看下这个包里是如何实现的:它实现了两个版本go1.18以上的范型版本和go1.18 btree_generic.go以下的非范型版本btree.go。 并且和左倾红黑树做了性能对比:btree_mem.go 这里我们重点看下非范型版本(范型版本逻辑一样,只是将一些基于接口实现的部分换成了范型实现),源码位于btree.go,如果要使用btree func NewWithFreeList(degree int, f *FreeList) *BTree { return &BTree{ degree: degree, cow: & ItemIterator) { 查找类似 func (t *BTree) Get(key Item) Item { return t.root.get(key) func (t *BTree go1.18 至此整个BTree的实现分析完毕。

    76921编辑于 2023-09-20
  • 来自专栏IT技术订阅

    BTree和B+Tree详解

    B+树索引是B+树在数据库中的一种实现,是最常见也是数据库中使用最为频繁的一种索引。B+树中的B代表平衡(balance),而不是二叉(binary),因为B+树是从最早的平衡二叉树演化而来的。在讲B+树之前必须先了解二叉查找树、平衡二叉树(AVLTree)和平衡多路查找树(B-Tree),B+树即由这些树逐步优化而来。

    73110编辑于 2022-06-23
  • 来自专栏站长的编程笔记

    【说站】mysql中BTree索引的理解

    mysql中BTree索引的理解 概念 1、BTree又叫多路平衡查找树。所有结点存储一个关键字。 全值匹配的查询SQL,如 where act_id= '1111_act' 联合索引汇中匹配到最左前缀查询,如联合索引 KEY idx_actid_name(act_id,act_name) USING BTREE 匹配范围值的SQL查询,如where act_date > '9865123547215'(not in和<>无法使用索引) 覆盖索引的SQL查询,就是说select出来的字段都建立了索引 以上就是mysql中BTree

    1.1K40编辑于 2022-11-23
  • 来自专栏公众号:懒时小窝

    【Postgresql】索引类型(btree、hash、GIST、GIN)

    引言 Postgresql 存在许多特定的索引查询类型,和大部分的Btree为基础架构的关系型数据库一样,在创建索引缺省的时候会把btree作为默认值。 本节简单介绍Postgresql的索引类型,虽然大部分业务常见常见可以用btree搞定,但是某些情况下其他特殊的索引可以有事半功倍的效果。 范围查询包含下面的内容: < <= = >= > 在进行上面这些操作符的运算时候,Postgresql 优化器会优先选择 Btree 索引,除了上面操作符以外还有BETWEEN 和 IN 也可以使用索引 col LIKE 'foo%' 或 col ~ '^foo',这些操作可以认为是可以动用索引的,但是注意col LIKE '%bar'这样的操作就不可以使用正则,因为几乎所有数据库都不支持后缀索引,这和Btree 内部是平衡树的访问方式,GiST索引通常可以用来替代其他索引,比如Btree

    6.8K40编辑于 2023-02-23
  • 来自专栏技术趋势

    mysql索引-hash和btree什么区别?

    背景 日常开发中,我们在创建mysql索引的时候经常有两种选择,BTREE和HASH,但其实很多同学不清楚到底BTREE和HASH有什么区别,当然如果不深入去了解很多觉得差不多,其实这个差别还是挺大的 比较名称 hash btree 备注 顺序 无序 有序 Btree数据是有序的,而hash是没有顺序的。 效率 高 较低 理论上hash查询效率较btree高。 索引排序 不支持 支持 hash不支持排序,btree支持。 部分索引 不支持 支持 hash不支持部分索引查询因为是无序的,而btree可以。 btree的实现:btree也称为b+树,主要的实现是通过一个平衡二叉树进行判断范围查询,如下图:,btree的性能比较稳定,不会出现很大的波动,也不会出现hash的碰撞问题,基于索引的顺序扫描,也可以利用双向指针快速左右移动 最后 btree适用于大部分的场景,并且也是非常实用,虽然说除了在少量数据量场景下,性能不如hash其它的特性与性能远超hash,而且很多开源的数据管理平台或系统都是借鉴btree的原理进行实现比如

    1.2K20编辑于 2022-03-29
  • 来自专栏程序技术知识

    MySQL的btree索引和hash索引区别

    hash索引仅仅能满足"=","IN"和"<=>"查询,不能使用范围查询. 比如< , 由于 Hash 索引比较的是进行 Hash 运算之后的 Hash 值,所以它只能用于等值的过滤,不能用于基于范围的过滤,因为经过相应的 Hash 算法处理之后的 Hash 值的大小关系,并不能保证和Hash运算前完全一样

    1.1K20编辑于 2022-04-23
  • 来自专栏小工匠聊架构

    MySQL-Btree索引和Hash索引初探

    ---- Btree索引的使用限制 如果不是按照索引最左列开始查找,则无法使用索引 继续使用例子: 订单表 order_sn 没有索引, 但有个联合索引建在在 order_sn + order_date

    1.1K20发布于 2021-08-17
  • 来自专栏Postgresql源码分析

    Postgresql源码(28)Btree索引分裂前后结构差异对比

    阅读顺序 《Postgresql源码(30)Postgresql索引基础B-linked-tree》 《Postgresql源码(31)Btree索引相关系统表和整体结构》 《Postgresql源码( 32)Btree索引分裂前后结构差异对比》 《Postgresql源码(33)Btree索引读——整体流程&_bt_first》 《Postgresql源码(34)Btree索引读——_bt_first 搜索部分分析》 《Postgresql源码(36)Btree索引读——_bt_next搜索部分分析》 总结 分析流程在后面,这里总结便于查询 场景一:root分裂为branch的前后对比(level1– | not null | info | text | | | Indexes: "t4_pkey" PRIMARY KEY, btree

    76520编辑于 2022-05-12
  • 来自专栏琦小虾的Binary

    数据结构技术知识总结之二——BTree

    BTree 2.1 B-Tree 与 B+Tree B-Tree 是 2-3 树的一种变形,可以设置度数 M,每个节点上最多可以有 M 个值;根据硬盘读取时的预读原理,磁盘读取时每次从磁盘上预读 page

    92130发布于 2020-07-15
  • 来自专栏数据库架构之美

    PostgreSQL13新特性解读-Btree索引去重Deduplication

    背景 PostgreSQL13.0于2020年9月24日正式release,13版本的PG带来很多优秀特性:比如索引的并行vacuum,增量排序,btree索引deduplication,异构分区表逻辑订阅等 Deduplication从字面意思也很好理解:“重复数据删除”,总的来说这个功能使得PG数据库有了新的方式去处理重复的索引键值,这大大减小了btree索引所占用的空间,提升了索引扫描的性能,deduplication 实验 下面通过实验,来看看PG13中btree索引的变化。对比的PG版本为PG11.3和PG13.0,表test1所有列相同,表test2所有列不相同。

    1.9K30发布于 2020-11-09
  • 来自专栏Postgresql源码分析

    Postgresql源码(32)Btree索引分裂前后结构差异对比

    阅读顺序 《Postgresql源码(30)Postgresql索引基础B-linked-tree》 《Postgresql源码(31)Btree索引相关系统表和整体结构》 《Postgresql源码( 32)Btree索引分裂前后结构差异对比》 《Postgresql源码(33)Btree索引读——整体流程&_bt_first》 《Postgresql源码(34)Btree索引读——_bt_first 搜索部分分析》 《Postgresql源码(36)Btree索引读——_bt_next搜索部分分析》 总结 分析流程在后面,这里总结便于查询 场景一:root分裂为branch的前后对比(level1– | not null | info | text | | | Indexes: "t4_pkey" PRIMARY KEY, btree

    66320编辑于 2022-07-14
  • 来自专栏CSDNToQQCode

    mysql全文索引FULLTEXT的哈希与BTREE方法对比

    为什么【FULLTEXT】用【BTREE】?答案如下: FULLTEXT: 全文搜索的索引。FULLTEXT 用于搜索很长一篇文章的时候,效果最好。 BTree索引: BTree是平衡搜索多叉树,设树的度为2d(d>1),高度为h,那么BTree要满足以一下条件: 每个叶子结点的高度一样,等于h; 每个非叶子结点由n-1个key和n个指针point 2d,key和point相互间隔,结点两端一定是key; 叶子结点指针都为null; 非叶子结点的key都是[key,data]二元组,其中key表示作为索引的键,data为键值所在行的数据; 在BTree 的机构下,就可以使用二分查找的查找方式,查找复杂度为h*log(n),一般来说树的高度是很小的,一般为3左右,因此BTree是一个非常高效的查找结构。

    1.2K30编辑于 2022-11-29
  • 来自专栏Postgresql源码分析

    Postgresql源码(33)Btree索引读——整体流程&_bt_first

    阅读顺序 《Postgresql源码(30)Postgresql索引基础B-linked-tree》 《Postgresql源码(31)Btree索引相关系统表和整体结构》 《Postgresql源码( 32)Btree索引分裂前后结构差异对比》 《Postgresql源码(33)Btree索引读——整体流程&_bt_first》 《Postgresql源码(34)Btree索引读——_bt_first 搜索部分分析》 《Postgresql源码(36)Btree索引读——_bt_next搜索部分分析》 function flow // 最顶层的循环在ExecutePlan总,转一次拿一条 ExecScan Note that this is currently only * implemented for btree index searches, not for heapscans or any other the last * element (needed since row header does not include a count) * sk_func points to the btree

    1.1K40编辑于 2022-07-14
  • 来自专栏Postgresql源码分析

    Postgresql源码(29)Btree索引读——整体流程&_bt_first

    Note that this is currently only * implemented for btree index searches, not for heapscans or any other SK_ROW_HEADER * sk_attno = index column number for leading column of row comparison * sk_strategy = btree the last * element (needed since row header does not include a count) * sk_func points to the btree search-style scan key * to an insertion scan key by replacing the sk_func with the * appropriate btree

    1.3K30编辑于 2022-05-12
  • 来自专栏大大刺猬

    3层高的BTREE+ 能存多少条数据

    使用mysql的时候总是会避免大表, 因为大表读写慢, 慢的原因就是树太高了. 一般三层高就比较合适(太矮了存的数据有限.)

    62720编辑于 2023-06-08
  • 来自专栏米扑专栏

    BTree,B-Tree,B+Tree,B*Tree都是什么

           3.非叶子结点的左指针指向小于其关键字的子树,右指针指向大于其关键字的子树;

    82850发布于 2019-02-19
领券