MySQL: Hash索引优缺点

MySQL: Hash索引优缺点优点:因为索引自身只需存储对应的哈希值,所以索引的结构十分紧凑,这也让哈希索引查找的速度非常快缺点:1、不能避免读取行哈希索引只包含哈希值和行指针,而不存储字段值,所以不能使用索引中的值来避免读取行。不过,访问内存中的行的速度很快,所以大部分情况下这一点对性能的影响并不明显。2、无法用于排序哈希索引数据并不是按照索引值顺序存储的,所以也就无法用于排序。3、无法使用部分索…

大家好,又见面了,我是你们的朋友全栈君。

优点:

因为索引自身只需存储对应的哈希值,所以索引的结构十分紧凑,这也让哈希索引查找的速度非常快

缺点:

1、不能避免读取行

哈希索引只包含哈希值和行指针,而不存储字段值,所以不能使用索引中的值来避免读取行。不过,访问内存中的行的速度很快,所以大部分情况下这一点对性能的影响并不明显。

2、无法用于排序

哈希索引数据并不是按照索引值顺序存储的,所以也就无法用于排序。

3、无法使用部分索引列匹配查找

哈希索引也不支持部分索引列匹配查找,因为哈希索引始终是使用索引列的全部内容来计算哈希值的。例如,在数据列(A,B)上建立哈希索引,如果查询只有数据列A,则无法使用该索引。

4、只支持等值查找

哈希索引只支持等值比较查询,包括=、IN()、<=>(注意<>和<=>是不同的操作)。也不支持任何范围查询,例如WHERE price>100。

5、存在Hash冲突

访问哈希索引的数据非常快,除非有很多哈希冲突(不同的索引列值却有相同的哈希值)。当出现哈希冲突的时候,存储引擎必须遍历链表中所有的行指针,逐行进行比较,直到找到所有符合条件的行。

同时,当哈希冲突很多的时候,一些索引维护操作的代价也会很高。例如,如果在某个选择性很低(哈希冲突很多)的列上建立哈希索引,那么当从表中删除一行时,存储引擎需要遍历对应哈希值的链表中的每一行,找到并删除对应行的引用,冲突越多,代价越大。

 

综上,Hash索引只适用于某些特定的场景(也就是说实际使用中用得非常少-_-!)

以上内容摘自《高性能MySQL》

版权声明:本文内容由互联网用户自发贡献,该文观点仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 举报,一经查实,本站将立刻删除。

发布者:全栈程序员-用户IM,转载请注明出处:https://javaforall.cn/141248.html原文链接:https://javaforall.cn

【正版授权,激活自己账号】: Jetbrains全家桶Ide使用,1年售后保障,每天仅需1毛

【官方授权 正版激活】: 官方授权 正版激活 支持Jetbrains家族下所有IDE 使用个人JB账号...

(0)


相关推荐

  • Yarn 安装与使用教程[通俗易懂]

    一、官网指引英文官网:Yarn英文官网中文文档:Yarn中文文档二、Yarn介绍Yarn是Facebook,Google,Exponent和Tilde开发的一款新的JavaScript包管理工具。你可以通过它使用全世界开发者的代码,或者分享自己的代码。代码通过包(package)(或者称为模块(module))的方式来共享。一个包里包含所有需要共享的代码,以及描述包信息的文件,称为package.json。它的优点是更快、更安全、更可靠。它的主要特性有离线模式、确定性

  • 微信小程序蓝牙通讯蓝牙模块demo[通俗易懂]

    微信小程序蓝牙通讯蓝牙模块demo[通俗易懂]公司项目用到蓝牙和硬件通讯,APP正在开发,弄一个微信小程序蓝牙通讯的demo,可能后期会有微信蓝牙的项目,第一次搞,遇到2个坑:1.安卓和苹果获取的硬件服务UUID顺序不同2.目前用的这一版“启用低功耗蓝牙设备特征值变化时的notify功能”在安卓和苹果的测试机上都返回启动失败,其实是已经启动成功,在我同事安卓手机上返回的正常。index.wxml适配器状态:{{

  • 真肝,整理了一周的Spring面试大全【含答案】,吊打Java面试官[通俗易懂]

    真肝,整理了一周的Spring面试大全【含答案】,吊打Java面试官[通俗易懂]对于Java的小伙伴来说,Spring是面试的必问环节,我研究Spring多年,甚至我的网名都叫SpringMeng。最新整理的数据结构和算法的值得收藏:❤️肝完了,一天掌握数据结构和算法面试题,吊打面试官,建议收藏❤️小孟肝了一周,继续给大家整理Spring的系列,帮你offer收到手疼。废话不多话,直接上干货。Q1什么是spring?Spring是个java企业级应用的开源开发框架。Spring主要用来.

  • 在图像的傅里叶变换中,什么是基本图像_傅立叶变换

    在图像的傅里叶变换中,什么是基本图像_傅立叶变换从现代数学的眼光来看,傅里叶变换是一种特殊的积分变换。它能将满足一定条件的某个函数表示成正弦基函数的线性组合或者积分。在不同的研究领域,傅里叶变换具有多种不同的变体形式,如连续傅里叶变换和离散傅里叶变换。 傅立叶变换属于调和分析的内容。”分析”二字,可以解释为深入的研究。从字面上来看,”分析”二字,实际就是”条分缕析”而已。它通过对函数的”条分缕析”来达到对复杂函数的深入理解和研究。从哲学上看

  • PostgreSQL查询全角字符「建议收藏」

    PostgreSQL查询全角字符「建议收藏」PostgreSQL中~*的妙用PostgreSQL中可以使用~*进行模糊查询,同时会忽略大小写,在查询的条件中也会支持正则表达式。所以在查询全角字符的时候,可以使用正则表达式来来进行查询。select*from表名where字段~*'[A-Za-z0-9]’;使用上面SQL就可以查询出数据库中所有包含全角字符的数据了。…

  • java- string转成 json[通俗易懂]

    java- string转成 json[通俗易懂]1,Stringoutput=FileUtils.ReadFile(url);System.out.println(output);JSONArrayjsonArray=JSONObject.parseArray(output);returnjsonArray;2,https://blog.csdn.net/javaQQ56148…

发表回复

您的电子邮箱地址不会被公开。

关注全栈程序员社区公众号