MySQL重新建立主键索引和非主键索引的方法
索引可能因为删除,或者页分裂等原因,导致数据页有空洞,重建索引的过程会创建一个新的索引,把数据按顺序插入,这样页面的利用率最高,也就是索引更紧凑、更省空间。
重新建立主键索引方法
这是错误的做法
alter table A drop primary key;
alter table A add primary key(id);
mysql官方文档写了三种措施:
- 整个数据库迁移,先dump出来再重建表(这个一般只适合离线的业务来做);
- 用空的alter操作,比如ALTER TABLE t1 ENGINE = InnoDB;这样子就会原地重建表结构;
- 用repaire table,不过这个是由存储引擎决定支不支持的(innodb就不行)
重新建立非主键索引的方法
alter table A drop index a;
alter table A add index(a);