修改Mysql数据库的索引

案例

描述

原来的数据库索引

UNIQUE KEY `tablename` (`column1`,`column2`) USING BTREE

需要把column1,column2进行调换(以便使用column1进行百万级别查询)。

解决

没找到直接修改索引的方法(有的话可以大家一起交流),通过先删除后建的方法实现。从效率上考虑也是要重新建立索引的,所以代价可以接受。
通常使用(推荐)

ALTER TABLE `表名` DROP INDEX 索引名;
ALTER TABLE `表名` ADD UNIQUE 索引名  (`column2`, `column1`) USING BTREE;

// 或者合到一条sql
ALTER TABLE `表名` 
DROP INDEX 索引名,
ADD UNIQUE 索引名  (`column2`, `column1`) USING BTREE;

其他方案如下(实践已能用):

## 删除唯一索引UNIQUE_APP_NAME,再重新建立一次
DROP INDEX UNIQUE_NAME ON `tablename`;
CREATE UNIQUE INDEX UNIQUE_NAME ON `tablename` (`column2`, `column1`) USING BTREE;

或者

ALTER TABLE `test`.`uuidtest` 
DROP INDEX `test_index`,
ADD INDEX `test_index`(`uuid`) USING BTREE COMMENT '测试注释';

说明

建立索引

方法1

ALTER TABLE 表名 ADD 索引类型 (unique,primary key,fulltext,index)[索引名](字段名)

//普通索引
alter table table_name add index index_name (column_list) ;
//唯一索引
alter table table_name add unique (column_list) ;
//主键索引
alter table table_name add primary key (column_list) ;

方法2

CREATE INDEX index_name ON table_name(username(length)); 

//create只能添加这两种索引;
CREATE INDEX index_name ON table_name (column_list)
CREATE UNIQUE INDEX index_name ON table_name (column_list)

删除索引

drop index index_name on table_name ;

alter table table_name drop index index_name ;
alter table table_name drop primary key ;
Logo

更多推荐