我有一个有 10M 行的表,我正在尝试ALTER TABLE
添加另一列(a VARCHAR(80)
)。
从数据建模的角度来看,该列应该是NOT NULL
- 但运行语句所花费的时间是一个考虑因素,NULL
如果有必要,可以更改客户端代码以处理列。
我NULL
尝试添加的列的能力是否会显着影响添加列所需的时间?
更多信息
我这样做的上下文是一个 Django 应用程序,由 South 生成迁移 - 添加三个单独的列,并在其中一个新添加的列上添加索引。查看 South 生成的 SQL,它将这个操作(添加三列和一个索引)分布在 15ALTER TABLE
条语句上——这似乎会使这个操作花费比它应该的更长的时间。
我看到一些参考资料表明 InnoDB 实际上不必在磁盘文件中为可空字段创建字段NULL
,而只需修改标头中的位字段。这会影响ALTER TABLE
操作的速度吗?