【发布时间】:2018-04-03 13:09:55
【问题描述】:
我必须更新一个包含 1000 万条记录(大小为 84 GB)的表,该表从许多系统实时获取信息。
我必须将列的大小从 3 个字符扩展到 5 个字符,因为对于这个特定字段,所有新数据都将是 5 个字符。
我是否需要重新索引表以使更改更快?
我是否需要在更新活动期间停止提供此表的 cron 作业?
对上述内容的一些澄清:
我将使用此查询来更改列:
ALTER TABLE tablename MODIFY cloumnname char(5)
我们使用 Oracle 数据库。
这是我的问题:
- 在生产中进行此更改之前,我是否需要停止所有日常 cron 作业?
- 删除现有索引和禁用触发器会使其更快吗?
【问题讨论】:
-
您使用的是哪个 RDBMS?如果有的话,重新索引将需要更多时间,而不是更少。
-
如果您要更改列数据类型,这将是一个非常昂贵的查询,我想这就是您所说的更新吗?
-
SQL 服务器? mysql?后格雷斯?在您在非关键系统上运行您自己的测试之前,我不建议您做任何事情。
-
考虑创建一个具有所需架构的新表并在创建索引之前写入该表
-
您的问题中缺乏信息导致推测对您没有一点帮助。在您自己尝试过之后提出一个更好的问题并提供更多信息。