我可以在使用时在 MySQL 数据库中的表上创建索引吗

Nif*_*fle 23 mysql index concurrency

如果可以的话,有什么理由(性能/稳定性)我不应该这样做?

Rie*_*sio 18

请注意,如果您的表使用InnoDB Plugin 存储引擎(我强烈推荐),如果它是二级索引(几乎肯定是这种情况),您仍然可以从表中读取(即它是非阻塞SELECT语句)。

  • MySQL 5.6 更新(2013 年 2 月):您现在可以使用在线 DDL 读取和写入表 - http://dev.mysql.com/doc/refman/5.6/en/innodb-create-index-overview.html (2认同)

小智 16

是的你可以。它会在创建时锁定您要向其添加索引的表。如果表很大,则可能需要一段时间,因为在构建索引时必须读取每一行。