我在 SQL Server 2012 中有一个包含 460.000 行的表。
该表具有以下架构:

我们的应用程序有问题,所以所有 500.000 行都是Comments用空格填充的。
这导致表大小约为 3.7GB:

在此之后,我执行以下操作来修复结尾空格,但数据库保持在 3.7GB。
update voucher set comments = ltrim(rtrim(comments))
Run Code Online (Sandbox Code Playgroud)
一个快速计算显示,一个完全填充的行大约有 280 个字节的原始数据,一个空行(所有 varchars 为空)有 32 个字节。
这意味着对于 460.000 行,我的表应该在 32MB-122MB 之间。
为什么表是3.7GB?我怎样才能收回空间?