MySQL5.5(不含5.5)添加或删除索引的效率很低下,具体过程如下:
- 首先创建一张新的临时表,表结构为通过命令alter table新定义的结构。
- 然后把原表中数据导入到临时表。
- 接着删除原表。
- 最后将临时表重命名为原来的表。
如果表大的话,这相过程是相当长的。
InnoDB从1.0.x版本后使用Fast Index Creation(快速索引创建)的方式,简称FIC,具体如下,
创建索引:对创建索引的表加一个S锁,不会重建表。因为是S锁所以不会影响读(但会阻塞写)。
删除索引:只需要更新内部实图,将辅助索引的空间标记为可用,同时删除数据库内部视图上对该表的索引定义。
需要说明下,FIC只限定于辅助索引,对于主键的创建和删除同样需要重建一张表。
**粗体** _斜体_ [链接](http://example.com) `代码` - 列表 > 引用
。你还可以使用@
来通知其他用户。