ycm0263:
技术贴:在 SQL 2000 里用 DROP COLUMN 删除某个字段之后如何回收空间?
[阅读: 1061] 2007-09-19 08:00:27
在网上查到一段话:
**********************************************************************************************
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  ̄")╭∩╮
