rails - 我不应该在 rails 迁移中使用默认值

bha*_*anu 4 sql postgresql ruby-on-rails ruby-on-rails-4

我不确定我是否应该在 SO 上问这个问题。但我必须这样做,因为我对我的怀疑没有明确的想法。我被告知不要在 Rails 迁移中设置默认值,而是在我们的 CTO 的代码审查中使用空值。而他的解释是这样的once the database gets huge enough, migrations with defaults runs slow and may throw database timeout errors。但我认为在数据库级别它足够快,可以作为它的初始设置来执行。我对吗?

dns*_*nsh 5

当表行数很大时,在添加列迁移中使用默认值需要时间。

这是 Postgres Doc 给出的提示:https : //www.postgresql.org/docs/9.5/static/ddl-alter.html

提示:添加具有默认值的列需要更新表的每一行(以存储新的列值)。但是,如果没有指定默认值,PostgreSQL 能够避免物理更新。因此,如果您打算用大部分非默认值填充列,最好添加没有默认值的列,使用 UPDATE 插入正确的值,然后添加任何所需的默认值,如下所述。