首页 > 数据库 >mysql两种索引结构应用场景

mysql两种索引结构应用场景

时间:2022-12-06 14:22:16浏览次数:46  
标签:场景 Hash 从根 查询 索引 哈希 mysql 节点

B-tree索引和Hash索引区别

B+tree:

  • B+树是一个平衡的多叉树,从根节点到每个叶子节点的高度差值不超过1,而且同层级的节点间有指针相互链接。
  • 在B+树上的常规检索,从根节点到叶子节点的搜索效率基本相当,不会出现大幅波动,而且基于索引的顺序扫描时,也可以利用双向指针快速左右移动,效率非常高。

因此,B+树索引被广泛应用于数据库、文件系统等场景

Hash 索引结构:

  其检索效率非常高,索引的检索可以一次定位,不像B-Tree 索引需要从根节点到枝节点,最后才能访问到页节点这样多次的IO访问,所以 Hash 索引的查询效率要远高于 B-Tree 索引。

  1. Hash 索引仅仅能满足"=",“IN"和”<=>"查询,不能使用范围查询。
  2. Hash 索引无法被用来避免数据的排序操作。
  3. Hash 索引不能利用部分索引键查询。
  4. Hash 索引在任何时候都不能避免表扫描。
  5. Hash 索引遇到大量Hash值相等的情况后性能并不一定就会比B-Tree索引高。

简单地说,哈希索引就是采用一定的哈希算法,把键值换算成新的哈希值检索时不需要类似B+树那样从根节点到叶子节点逐级查找,只需一次哈希算法即可立刻定位到相应的位置,速度非常快。

 

使用场景

  1. 如果是等值查询,那么哈希索引明显有绝对优势
  2. 范围查询、排序、分组等查询特征,用B+树索引

 

标签:场景,Hash,从根,查询,索引,哈希,mysql,节点
From: https://www.cnblogs.com/cgy-home/p/16955082.html

相关文章

  • MySQL忽略大小写的注意事项
    一、背景在阿里的规范中,不允许超过2个JOIN的关联查询,故项目中需要将复杂SQL拆分二、问题目前MySQL5.7非特殊场景默认选择utf8mb4,排序选择utf8mb4_general_ci,MySQL8默认选择u......
  • mysql:数据量过多时使用索引覆盖
    1.什么是索引?索引(在MySQL中也叫“键key”)是存储引擎快速找到记录的一种数据结构,通俗来说类似书本的目录,这个比方虽然被用的最多但是也是最恰如其当的,在查询书本中的......
  • flink sql 程序消费kafka数据到mysql设置参数connector.url问题汇总
    1.问题现象:使用flinksql程序消费kafka数据写入mysql时,使用TVF表值函数,START_ENENT_TIME和END_ENENT_TIME始终比消费时间小大约13小时。解决办法在写入mysql的sink......
  • MySql的运行(Windows环境)
    MySql的运行(Windows环境)MySql数据库是免费、开源的关系型数据库一、MySql的下载mysql-5.7win64下载地址:https://downloads.mysql.com/archives/community/注意:这里......
  • 详解监听MySQL的binlog日志工具分析:Canal
    Canal是阿里巴巴旗下的一款开源项目,利用Java开发。主要用途是基于MySQL数据库增量日志解析,提供增量数据订阅和消费,目前主要支持MySQL。GitHub地址:https://github.com/alib......
  • Sql Server sql语句创建索引
    https://blog.csdn.net/beautifull001/article/details/125178715createindex[index_mode]on[cn_name]([car_mode]);index_mode自定义索引名cn_name表名car_mode列......
  • Mysqlbackup 增量备份恢复示例
    适用范围5.7+方案概述在生产环境中,我们都会对数据库进行备份,我们知道ORACLE的RMAN备份很灵活,有全备,增量,归档等等备份方式!针对MYSQL来讲,也有一款自己的备份工具mysql......
  • mysql基础问题三问(底层逻辑;正在执行;日志观察)
    背景:经常面试会遇到且实际工作中也会应用到的三个场景:目录:一.mysql查询时的底层原理是什么?二.如何查看正在执行的mysql语句?三.如何观察mysql运行过程中的日志信息?--......
  • MySQL
    MySQL创建数据表创建MySQL数据表需要以下信息:表名表字段名定义每个表字段语法以下为创建MySQL数据表的SQL通用语法:CREATETABLEtable_name(column_namecolumn_type);以......
  • 索引
    索引的功能:约束---主键、外键、唯一、普通、联合加速查找 原理:索引数据库专门用于查找数据的一种数据结构,类似字典中的目录,查找字典内容时可以根据目录查找数据的存放......