hash索引

哈希索引基于哈希表实现,适用于精确匹配查询,具有快速检索特点,但不支持范围查询和排序操作。其优点是查询效率高,缺点包括冲突处理、无法用于范围和部分模糊查询、不支持多列联合索引等。
摘要由CSDN通过智能技术生成

每日一记

hash索引:
哈希索引(hash index)基于哈希表实现,只有精确匹配索引所有列的查询才有效。对于每一行数据,存储引擎都会对所有的索引列计算一个哈希码(hash code),哈希码是一个较小的值,并且不同键值的行计算出来的哈希码也不一样。哈希索引将所有的哈希码存储在索引中,同时在哈希表中保存指向每个数据行的指针。

对于hash相同的,采用链表的方式解决冲突。类似于hashmap。因为索引的结构是十分紧凑的,所以hash索引的查询很快。

在这里插入图片描述

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

hash索引的不足:
1).Hash 索引仅仅能满足”=”,”IN”和”<=>”查询,不能使用范围查询。
由于 Hash 索引比较的是进行 Hash 运算之后的 Hash 值,所以它只能用于等值的过滤,不能用于基于范围的过滤,因为经过相应的 Hash 算法处理之后的 Hash 值的大小关系,并不能保证和Hash运算前完全一样。
2).Hash 索引无法被用来避免数据的排序操作。
由于 Hash 索引中存放的是经过 Hash 计算之后的 Hash 值,而且Hash值的大小关系并不一定和 Hash 运算前的键值完全一样,所以数据库无法利用索引的数据来避免

MySQL中的哈希索引是一种特殊类型的索引,它能够提供非常高的检索效率。与B-Tree索引相比,哈希索引可以直接一次定位到数据,而不需要从根节点到叶子节点多次IO访问。这使得哈希索引在查询方面具有更高的性能。 在MySQL中,可以通过创建自定义哈希索引来模拟哈希索引的功能。这种方法是在B-Tree索引的基础上创建一个伪哈希索引。虽然实际上还是使用B-Tree进行查找,但是使用哈希值而不是键本身进行索引查找。 为了使用哈希索引,你可以手动指定使用哈希函数,在查询的WHERE子句中使用哈希函数来搜索。这样可以避免存储大量的URL,并且能够使用较小的索引来进行超长键的索引。例如,通过在URL列上进行哈希,可以使用CRC32哈希函数来创建一个url_crc列作为索引,然后在查询时使用哈希函数来搜索。 总之,MySQL的哈希索引具有高效的检索性能,并且可以通过创建自定义哈希索引来模拟哈希索引的功能。这种方法可以提高查询效率,特别是对于需要存储大量URL并根据URL进行搜索的情况。<span class="em">1</span><span class="em">2</span><span class="em">3</span> #### 引用[.reference_title] - *1* *2* [MySQL索引算法——哈希算法](https://blog.csdn.net/qq_41618510/article/details/83317969)[target="_blank" data-report-click={"spm":"1018.2226.3001.9630","extra":{"utm_source":"vip_chatgpt_common_search_pc_result","utm_medium":"distribute.pc_search_result.none-task-cask-2~all~insert_cask~default-1-null.142^v93^chatsearchT3_2"}}] [.reference_item style="max-width: 50%"] - *3* [MySQL Hash索引和B-Tree索引的区别](https://download.csdn.net/download/weixin_38611230/13691152)[target="_blank" data-report-click={"spm":"1018.2226.3001.9630","extra":{"utm_source":"vip_chatgpt_common_search_pc_result","utm_medium":"distribute.pc_search_result.none-task-cask-2~all~insert_cask~default-1-null.142^v93^chatsearchT3_2"}}] [.reference_item style="max-width: 50%"] [ .reference_list ]
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值