概述
本文主要介绍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 版