MySQL5.5(不含5.5)增加或删除索引的效率很低下,具体过程如下:

  1. 首先创立一张新的长期表,表构造为通过命令alter table新定义的构造。
  2. 而后把原表中数据导入到长期表。
  3. 接着删除原表。
  4. 最初将长期表重命名为原来的表。

如果表大的话,这相过程是相当长的。
InnoDB从1.0.x版本后应用Fast Index Creation(疾速索引创立)的形式,简称FIC,具体如下,
创立索引:对创立索引的表加一个S锁,不会重建表。因为是S锁所以不会影响读(但会阻塞写)。
删除索引:只须要更新外部实图,将辅助索引的空间标记为可用,同时删除数据库外部视图上对该表的索引定义。

须要阐明下,FIC只限定于辅助索引,对于主键的创立和删除同样须要重建一张表。