MySQL 哈希索引

哈希索引基于哈希表实现,适用于精确匹配查询。MySQL的Memory引擎支持哈希索引,它通过计算索引列的哈希码来快速定位数据行。哈希冲突可能导致链式存储或溢出桶,不支持排序和部分列匹配,仅限于等值查询。
摘要由CSDN通过智能技术生成

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

在哈希索引中,采用桶(bucket)来表示一条或多条记录的存储单元。令K表示搜索码的集合,B表示所有桶地址的集合。哈希函数h是一个从K中的找出B中的一个桶地址。

插入一条搜索码为的数据行,计算,得出一个哈希码,该哈希码能够索引到能够存放该数据行的桶的地址,如果桶不满。

搜索一条搜索码为的数据行,计算,得出一个哈希码,该哈希码能够索引该数据行所存放桶的地址。如果有两个搜索码和,它们计算的哈希码一致,如果该哈希码索引的桶能够存放这两个数据行,则在索引到的桶中查找和 。

在MySQL中,只有Memory引擎显示支持哈希索引,这也是Memory引擎搜索表的默认索引类型。

有如下表:

CREATE DATABASE Student;
CREATE TABLE Student
( 
  id    int      NOT NULL ,
  name  char(10) NOT NULL ,
  score float(1) NULL ,
  KEY USING HASH(id)
)ENGINE=MEMORY;

INSERT INTO Student 
(
  id,name,score
)
VALUES 
( 78, 'Crick',97.6 ),
( 125,'Katz', 85.3 ),
( 634,'Gold', 66.6 );
+-----+-------+-------&
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值