首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >在SQL server中,将文本列的所有值设置为NULL是否会减小数据库大小?

问在SQL server中,将文本列的所有值设置为NULL是否会减小数据库大小?
EN

Stack Overflow用户
提问于 2012-05-07 20:35:41
回答 3查看 2.5K关注 0票数 4

在SQL Server 2008的上下文中。

我的工作是将数据类型为Text的列中的值压缩并迁移到另一个数据类型为Image的列中,即同一个表。现在,我们不想删除Text列。所以,我只是将该列的所有值都设置为NULL。

设置为NULL是否会立即提供空间增益?即减少数据库大小?

删除列可以做到这一点吗?

如果不是,还需要做什么额外的事情才能获得未使用的空间?

EN

回答 3

Stack Overflow用户

回答已采纳

发布于 2012-05-07 23:30:13

要实际减小数据库大小,您需要:

  • Drop
  • 如果没有聚集索引,则重新构建聚集索引或表
  • 收缩数据库文件

我不建议收缩,因为它会导致碎片。但是,数据库的磁盘占用空间不会自动下降。您将拥有一个内部有空闲空间的数据库,其中可以填充更多的数据/索引,而不会进一步增加数据库。

票数 1
EN

Stack Overflow用户

发布于 2012-05-07 23:21:53

文本列对于表的单行中的列值至少需要16个字符值。要获得空闲空间,请在将此列中的所有值设置为null后重新组织数据和索引。

为了回收这个空间,我们必须使用DBCC、CLEANTABLE或收缩数据库。

语法: DBCC CLEANTABLE(数据库名,"Table_name or View_name")

Refer this link to defrag and reindex the table

票数 1
EN

Stack Overflow用户

发布于 2012-05-07 20:50:42

将这些值设置为NULL不会有任何不同。删除列本身不会释放磁盘空间。您还需要重新构建索引:Disk Space Taken By Dropped Columns

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/10482185

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档