概述
本文主要介绍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方式,但是在DMS中查看表结构的时候发现该索引的方式是BTREE。
由于MySQL的InnoDB引擎不支持Hash索引,而MySQL服务层是有Hash索引选项的,因此建表语句可以使用子句using hash
,而实际创建的索引类型仍然是Btree方式的索引。
适用于
- 云数据库 RDS MySQL 版