sp_estimated_rowsize_reduction_for_vardecimal (Transact-SQL)

估计对表启用 vardecimal 存储格式后行平均大小的减少量。使用该数字可估计表大小的总体减少量。由于使用统计采样来计算行大小的平均减少量,因此只能将该计算结果视为估计值。在极个别的情况下,启用 vardecimal 存储格式后行大小可能会增加。从 SQL Server 2005 Service Pack 2 开始,只有 SQL Server Enterprise Edition、Developer Edition 和 Evaluation Edition 支持 Vardecimal 存储格式。

注意注意

后续版本的 Microsoft SQL Server 将删除该功能。请避免在新的开发工作中使用该功能,并着手修改当前还在使用该功能的应用程序。请改用 ROW 和 PAGE 压缩。有关详细信息,请参阅创建压缩表和索引。有关压缩对表和索引的大小的影响,请参阅 sp_estimate_data_compression_savings (Transact-SQL)

主题链接图标Transact-SQL 语法约定

语法

sp_estimated_rowsize_reduction_for_vardecimal [ [ @table_name = ] 'table'] [;]

参数

  • [ @table = ] 'table'
    由三部分组成的表名,将要更改此表的存储格式。table 的数据类型为 nvarchar(776)。

返回代码值

0(成功)或 1(失败)

结果集

将返回如下结果集,以提供当前表大小和估计表大小的信息。

列名

数据类型

说明

avg_rowlen_fixed_format

decimal (12, 2)

以固定十进制存储格式表示行的长度。

avg_rowlen_vardecimal_format

decimal (12, 2)

表示使用 vardecimal 存储格式时的平均行大小。

row_count

int

表中的行数。

注释

使用 sp_estimated_rowsize_reduction_for_vardecimal 估计如果对表启用 vardecimal 存储格式后可以节省的空间。例如,如果平均行大小能够减少 40%,则可能可以将表的大小减少 40%。您可能无法节省空间,具体取决于填充因子和行大小。例如,如果某行长度为 8000 字节并且您将该行的大小减少 40%,则数据页上仍只能容纳一行,因而并未节省空间。

如果运行 sp_estimated_rowsize_reduction_for_vardecimal 得到的结果指示表的大小将增加,这表示表中的许多行使用的几乎是 decimal 数据类型的完全精度,因而为满足 vardecimal 存储格式的需要而增加的少量开销大于 vardecimal 存储格式所带来的节约量。在这种极个别的情况下,不要启用 vardecimal 存储格式。

如果对表启用了 vardecimal 存储格式,请使用 sp_estimated_rowsize_reduction_for_vardecimal 估计在禁用了 vardecimal 存储格式的情况下行的平均大小是多少。

权限

需要对表具有 CONTROL 权限。

示例

下例估计了 AdventureWorks2008R2 数据库中的 Production.WorkOrderRouting 表在压缩后行大小变小的情况。

USE AdventureWorks2008R2;
GO
EXEC sp_estimated_rowsize_reduction_for_vardecimal 'Production.WorkOrderRouting' ;
GO