mysql创建hash索引

    mysql支持的存储引擎与索引结构对照表如下: 

Storage Engine Permissible Index Types
InnoDB BTREE
MyISAM BTREE
MEMORY|HEAP HASH,BTREE
NDB HASH,BTREE

    从表中可以看出,默认InnoDB存储引擎的表,索引类型并不支持hash。

    而MEMORY类型却可以支持hash。可以考虑创建一个表,存储引擎指定为memory。

   建表: 

create table emp_test(
id int,
name varchar(20),
age int,
salary decimal(8,2)
)engine=memory default charset=utf8;

   建索引:

create index idx_id_hash using hash on emp_test(id);

    查看索引:

show index from emp_test;

    运行截图:      

  

    我们看到索引类型为HASH,表明索引创建成功。

    hash索引的特点是,查询效率高,因为只需要一次就能定位到数据,但是如果是范围查找,索引就失效了。我们不妨来看看一个执行计划:

    从执行计划可以看出,hash索引不支持范围查找,因为hash计算的结果可能与真实的结果顺序不一致。因此范围查找就失效了。 

猜你喜欢

转载自blog.csdn.net/feinifi/article/details/121132864