概述

本文主要介绍RDS MySQL引擎表索引方式更改为Hash无效的原因说明。

 

详细信息

阿里云提醒您:

  • 如果您对实例或数据有修改、变更等风险操作,务必注意实例的容灾、容错能力,确保数据安全。
  • 如果您对实例(包括但不限于ECS、RDS)等进行配置与数据修改,建议提前创建快照或开启RDS日志备份等功能。
  • 如果您在阿里云平台授权或者提交过登录账号、密码等安全信息,建议您及时修改。
MySQL包含的索引方式主要包括Btree、Hash、FullText和Rtree,经常使用的主要是Btree和Hash两种。通过DMS登录RDS实例后,执行DDL语句可以在InnoDB引擎表上创建Hash方式的索引,SQL语句如下。
drop table if exists auth_order;
create table auth_order (
    id smallint not null comment '主键',
	member_id varchar(30) not null comment '会员id',
	name varchar(100) not null comment '名称',
	primary key (id),
	key auth_mem_name (member_id) using hash
) engine=innodb default charset=utf8 comment='会员信息';
系统显示类似如下。
创建Hash类型索引
可以看到该表中的索引是Hash方式,但是在DMS中查看表结构的时候发现该索引的方式是BTREE。
Btree索引

 

由于MySQL的InnoDB引擎不支持Hash索引,而MySQL服务层是有Hash索引选项的,因此建表语句可以使用子句using hash,而实际创建的索引类型仍然是Btree方式的索引。

 

适用于

  • 云数据库 RDS MySQL 版