mysql code 关键字_MYSQL数据库索引_like

本文讨论了为何使用索引以减少IO次数,并解释了不采用二叉树而选择B+Tree作为MySQL索引数据结构的原因。详细介绍了B+Tree的特性,包括其在InnoDB中的应用,以及如何通过索引优化查询。同时提到了B+Tree在应对不同类型的查询(如'%'通配符)时的效率,并讨论了组合索引的使用。
摘要由CSDN通过智能技术生成

一、为什么要使用索引?

为了减少IO次数

二、为什么不使用二叉树?

减少IO次数。

我们创建的索引可能有几个G那么大,不可能一次性都加载到内存中,需要逐一加载磁盘页(一个磁盘页对应一个节点),二叉树的最坏查询复杂度取决于树的高度。数据量越大,二叉树越“高”,使用B+树而不使用二叉树的原因在于将一棵“瘦高树”替换为“矮胖树”。

三、实现索引的数据结构B(balance)+Tree

  • mysql默认存储引擎:InnoDB
  • 叶子节点:一棵树当中没有子结点(即度为0)的结点称为叶子结点,简称“叶子”。又称为终端结点

mysql的数据都保存在磁盘上,创建索引的作用是为了快速定位磁盘块的位置,减少磁盘的访问次数,(访问一次内存的速度远快于访问一次磁盘)

系统磁盘以磁盘块为基本单位,InnoDB有页 的概念,页默认大小是16KB,而系统磁盘块达不到这么大,所以取N个地址连续的磁盘块作为一页。

  • 两个指针:一个指向根节点,另一个指向最小的叶子节点
  • 若一个节点有N个子树,那么此节点就包含N个关键字
  • 叶子节点:所有的叶子节点中包含全部的关键字信息。叶子节点本身按照关键字的大小自小而大,按照顺序排列;叶子节点包括①关键字②指向含这些关键字记录的指针(指针指向该条记录在磁盘上的位置)
  • 非终端节点:仅包含其子树中最大/最小的关键字
  • </
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值