sql-server - 未使用的空间分配给 SQL Server 中的表

标签 sql-server database database-administration

我的数据库中有一个表,其中有大约 55GB 的未使用空间。如何减少这些未使用的空间?

我尝试过的步骤:

  1. 我重建了索引,这对我帮助很大,未使用的空间从 110GB 减少到 55GB。
  2. 通过运行 DBCC SHOWCONTIG,我发现我的表的平均页面密度为 99%(这在某种程度上是好的,但它并没有帮助我减少未使用的空间)
  3. 我更改了填充因子并再次重建索引(这次将填充因子更改为 100 后重建索引没有反射(reflect)出任何预期的结果)
  4. 我试过 DBCC CLEANTABLE (DBNAME,"Tablename"),我无法减少未使用的空间
  5. 我没有尝试收缩数据库,我想在不收缩数据库的情况下减少未使用的空间。

当前输出:

CurrentOutput

期望的输出:我想减少总空间,以便减少未使用的空间。

最佳答案

创建一个新表,然后将数据导出到这个新表。

SELECT * INTO newtable FROM table -- or copy wizard (by SSMS)

然后,删除旧表,但要确保所有数据都已成功传输。

关于sql-server - 未使用的空间分配给 SQL Server 中的表,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/54299432/

相关文章:

sql-server - 创建 SQL Server 触发器以从自然键转换为代理键

database - 在业务层过滤来自数据访问层的结果

php - 将大型 csv 文件导入 mysql 数据库

database - 如何在 oracle 11g 中仅导出和导入数据?

mysql - Extra :-Using where; Using temporary; Using filesort如何优化MYSQL

mysql - 截断表后 PostgreSQL 错误 22012 除以零

sql-server - 如果链接表中没有匹配的值,如何显示零值

SQL Server 2014 - 列出存储过程中使用的所有函数和子函数

sql - 如果 SQL Server 中先前的单元格值和当前单元格值相同,则选择空

sql - 为什么 IN 运算符在传递重复值(value1、value1 ....)时返回不同的选择