哈希索引(Hash Index)是基于哈希表(Hash Table)实现的一种索引结构,核心思想是通过哈希函数把键值映射到一个桶(bucket)地址,从而支持**等值查询(=)**的快速定位。下面从“怎么建”“不同数据库怎么建”“设计要点”三个层面说明。
hash(key) → bucket_id❌ InnoDB 不支持用户显式创建哈希索引
但:
-- 查看是否开启
SHOW VARIABLES LIKE 'innodb_adaptive_hash_index';
✅ 替代方案:
CREATE TABLE t (
id INT,
name VARCHAR(50),
INDEX USING HASH(name)
) ENGINE=MEMORY;
✅ 支持显式哈希索引(PG 10+ 稳定)
CREATE INDEX idx_hash_name
ON users USING HASH (name);
特点:
= 查询CREATE CLUSTER hash_cluster (id NUMBER)
HASHKEYS 1000;
用于等值访问极频繁的表。
本质就是哈希索引:
HSET user:1 name "Tom"
HGET user:1 name
=, IN)>, <, BETWEEN)ORDER BYLIKE)| 对比项 | 哈希索引 | B+Tree |
|---|---|---|
| 查询方式 | 等值 | 等值 + 范围 |
| 排序 | ❌ | ✅ |
| 稳定性 | 受冲突影响 | 稳定 |
| 使用频率 | 低 | 高 |
哈希索引通过哈希函数把键映射到桶,用于极快的等值查询;建索引时要看数据库是否支持,并只在“等值、高频、低冲突”场景下使用。
如果你有具体数据库(MySQL / PG / Oracle)或使用场景,我可以给你更针对性的建索引方案。
免责声明:本站发布的内容(图片、视频和文字)以原创、转载和分享为主,文章观点不代表本网站立场,如果涉及侵权请联系站长邮箱:is@yisu.com进行举报,并提供相关证据,一经查实,将立刻删除涉嫌侵权内容。