mysql安全的添加索引

ALTER TABLE app_member_ext
ADD INDEX idx_uid (uid),
ALGORITHM=INPLACE, LOCK=NONE;

对于InnoDB引擎的普通索引

  • ALGORITHM=INPLACE:不会全表复制,只修改元数据和填充索引页
  • LOCK=NONE:允许并发读写,不会阻塞DML操作
  • 结论:可以在线执行,不会导致业务中断

注意. 主键索引不支持

如何安全的重命名 表

RENAME TABLE
table1 TO table1_backup_20260509,
table1_copy1 TO table1;

假设有  table1_copy1  完全复制 table1  结构和数据
先将  table1  改为  table1_backup_20260509
然后将  table1_copy1  重命名为 table1   完成。

原子性:MySQL 会锁住字典,确保在重命名期间不会有新的查询进来。当语句执行完毕,所有后续的查询都会指向新的表(即原来的 copy1)。

回滚简单:如果新表有问题,你可以马上执行反向操作,把名字换回来,数据零损失。