【问题标题】:Is it necessary to rebuild index after changing column default value?更改列默认值后是否需要重建索引?
【发布时间】:2020-12-17 19:03:08
【问题描述】:

是否有必要在更改特定列以更改默认值时删除并重新创建涉及特定列的索引?我的专栏看起来像SubNum varchar(8) NOT NULL DEFAULT '',我想将其更改为SubNum varchar(8) NOT NULL。我的相关索引如下:

KEY `Docs1` (`First`,`SubNum`,`DocNum`),
KEY `Docs2` (`SubNum`,`DocNum`),

我使用的是 MySQL 5.5.49 版本,表是MyIsam

【问题讨论】:

  • not null default null 不是一个有效的设置,首先。
  • 您认为为什么需要重新创建索引?更改字段的默认值不会更改现有字段的任何值。
  • @Luuk 我遇到的信息说在列数据类型更改后需要重建索引(以及其他人说没有必要),但我想知道这是否需要要完成。我本以为不会,但认为值得提出这个问题。
  • @GMB 抱歉,我只是想放弃default ''
  • DEFAULT ''VARCHAR(8) 的数据类型关系不大。如果你更改了8,那么你需要重建索引。

标签: mysql database indexing


【解决方案1】:

更改列的默认值不会更改其数据类型。鉴于该列在更改之前不为空,此更改不会影响任何现有数据 - 它只会更改插入的下一行的默认值。由于当前存储的数据没有变化,因此无需重建索引。

【讨论】:

    【解决方案2】:

    你不需要在修改表后重新索引它,它会在内部创建一个新表并对其进行索引。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2014-11-06
      • 2012-02-27
      • 2015-10-13
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多