【发布时间】:2015-01-31 01:38:08
【问题描述】:
我有一个包含 30M 行的表和我需要在其中创建 INDEX 的列之一。最快的方法是什么?我考虑过的两个选项是截断表,添加索引,然后将 SQL 重新导入为 csv 文件。另一个是ALTER TABLE 声明。
我应该怎么做才能获得最快的性能?
【问题讨论】:
标签: mysql sql database-design indexing database-performance
我有一个包含 30M 行的表和我需要在其中创建 INDEX 的列之一。最快的方法是什么?我考虑过的两个选项是截断表,添加索引,然后将 SQL 重新导入为 csv 文件。另一个是ALTER TABLE 声明。
我应该怎么做才能获得最快的性能?
【问题讨论】:
标签: mysql sql database-design indexing database-performance
最快的方法是使用 ALTER TABLE。如果您截断、更改并重新导入,那么您将不得不等待截断运行,然后在重新导入运行时等待,这将通过构建新索引来添加。仅使用 ALTER,唯一的时间就是构建新索引,因此它会跳过截断和导入时间。
但是,对于 30M 行,构建索引可能需要一些时间并且可能会超时。如果发生这种情况,您将需要以某种方式增加超时(我不使用 MySQL,所以我无法告诉您如何操作)。如果这不起作用,您可能别无选择,只能执行截断并重新导入路由,希望使用某种批量上传。
【讨论】: