中国开发网: 论坛: 程序员情感CBD: 贴子 565539
ycm0263: 技术贴:在 SQL 2000 里用 DROP COLUMN 删除某个字段之后如何回收空间?
在网上查到一段话:
**********************************************************************************************
DROP COLUMN 命令并不是物理上把字段删除,而只是简单地把它标记为 SQL 操作中不可见的。随后对该表的插入和更新将在该字段存储一个 NULL。因此,删除一个字段是很快的,但是它不会立即缩减你的表在磁盘上的大小,因为被删除了的字段占据的空间还没有回收。这些空间将随着现有的行的更新而得到回收。

ALTER TYPE 要求重写整个表的特性有时候是一个优点,因为重写的过程消除了任何表中的没用的空间。比如,要想立刻回收被一个已经删除的字段占据的空间,最快的方法是
ALTER TABLE table ALTER COLUMN anycol TYPE anytype;

这里 anycol 是任何在表中还存在的字段,而 anytype 是和该字段的原类型一样的类型。这样的结果是在表上没有任何可见的语意的变化,但是这个命令强迫重写,这样就删除了不再使用的数据。
**********************************************************************************************
表“ABC”里有个长度为 8 的 int 型字段“def”,偶在 SQL 的查询分析器里跑
ALTER TABLE ABC ALTER COLUMN def TYPE int
还有
ALTER TABLE ABC ALTER COLUMN def TYPE int(8)
都报错。
谁知道这个指令怎么用?或是有其他方法立即回收空间。
╭∩╮(︶︿︶)╭∩╮ ╭∩╮( ̄ε  ̄")╭∩╮ ╭∩╮ ( ̄0  ̄")╭∩╮

相关信息:


欢迎光临本社区,您还没有登录,不能发贴子。请在 这里登录