Sybase

在包含超過 2500 萬條記錄的大表上更改表修改列

  • November 18, 2011

我想修改包含超過 2500 萬條記錄的大表上的列。我正在使用 sybase 12.5.4。我已經閱讀了這些文章

在具有數百萬行的表中更改列定義的最有效方法是什麼

ALTER TABLE 在具有索引列的大表上

我目前的策略是

  • 刪除所有非聚集索引
  • 刪除聚集索引
  • Alter table modifcy column varchar (32) – 列目前為 char(20)
  • 重新創建聚集索引
  • 重新創建非聚集索引

是否有意義。有更快的方法嗎?

編輯 :

  • 表數據大小:16.7 GB
  • 總行數:25835155
  • 平均行大小:0.64 KB
  • 8 非聚集索引
  • 是的,我要更改的列是 2 列 NC 索引中的第二列

您應該只需要刪除並重新創建受影響的 NC 索引。

話雖如此,在測試伺服器上,您可以看到這樣做與刪除上面所有索引的策略相比的差異。

我認為刪除/創建單個索引總體上會更快,因為否則數據將移動兩次:一次 char 到 varchar,另一個用於建構聚集索引。然後你有 NC 創建成本。

引用自:https://dba.stackexchange.com/questions/7347