不,创建索引所需的时间与数据量成正比。在MS SQL中,我可以在大约10分钟内为一个包含许多记录的表创建索引。编辑:看到评论后,请详细说明无限。按照定义,您是在说它永远不会完成,我的答案与长时间运行的索引创建相关,而不是无限的情况。
你使用的是哪个引擎? ALTER TABLE ...CREATE INDEX的实现方式有很大的差异。使用MyISAM时,任何索引更改都需要完全重建表。这不是引擎固有的问题,而是一个从未修复的错误。在使用InnoDB时,创建次要索引不需要重建表,但此优化仅适用于使用InnoDB插件(而不是旧版附带的引擎)的情况下。更改主键始终需要重建,因为它是聚簇的。无论在哪种情况下重建表格都需要大量的工作,因为它必须重建所有现有的索引,以及重写行,以完成操作。如果您的表格适合RAM(10M行听起来应该很容易),这是相对较快的。重建不适合RAM的表格相当昂贵,如果可能的话我建议避免它。重建不适合RAM的单个索引非常昂贵,最好避免它。你需要多经常添加新索引?也许你可以使用已创建的索引填充表格。