sp_estimated_rowsize_reduction_for_vardecimal (Transact-SQL)

テーブルで vardecimal ストレージ形式が有効になっている場合に、行の平均サイズの削減量を見積もります。この数値を使用して、テーブル サイズ全体の削減量を見積もることができます。行サイズの平均削減量を計算するには、統計サンプリングが使用されます。このため、結果はあくまでも見積もりとして扱ってください。vardecimal ストレージ形式を有効にした後、まれに行サイズが増加する場合があります。vardecimal ストレージ形式は、SQL Server 2005 Service Pack 2 以降の SQL Server Enterprise Edition、Developer Edition、および Evaluation Edition でのみ使用できます。

注意注意

この機能は、将来のバージョンの Microsoft SQL Server では削除される予定です。 新しい開発作業では、この機能の使用を避け、現在この機能を使用しているアプリケーションは修正するようにしてください。代わりに、行の圧縮とページの圧縮を使用してください。詳細については、「圧縮されたテーブルおよびインデックスの作成」を参照してください。圧縮がテーブルとインデックスのサイズに与える影響については、「sp_estimate_data_compression_savings (Transact-SQL)」を参照してください。

トピック リンク アイコンTransact-SQL 構文表記規則

構文

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

引数

  • [ @table= ] 'table'
    ストレージ形式を変更するテーブルの、3 つの要素で構成された名前を指定します。table のデータ型は nvarchar(776) です。

リターン コードの値

0 (成功) または 1 (失敗)

結果セット

現在のテーブル サイズと見積もりテーブル サイズの情報に関する、以下の結果セットが返されます。

列名

データ型

説明

avg_rowlen_fixed_format

decimal (12, 2)

固定 decimal ストレージ形式での行の長さ。

avg_rowlen_vardecimal_format

decimal (12, 2)

vardecimal ストレージ形式を使用した場合の平均行サイズ。

row_count

int

テーブルに含まれる行数。

説明

sp_estimated_rowsize_reduction_for_vardecimal を使用すると、テーブルで vardecimal ストレージ形式を有効にした場合のサイズ削減量を見積もることができます。たとえば、行の平均サイズを 40% 削減できれば、テーブル サイズを 40% 削減できる可能性があります。ただし FILL FACTOR と行サイズによっては、テーブル領域を削減できない場合もあります。たとえば、長さ 8,000 バイトの行があり、そのサイズを 40% を削減したとしても、データ ページに収まるのは 1 行のみであることに変わりはないので、領域は削減されません。

sp_estimated_rowsize_reduction_for_vardecimal の結果でテーブルが大きくなることが示される場合は、テーブルの多くの行で decimal データ型の有効桁数のほとんどが使用されており、vardecimal ストレージ形式に必要なわずかなオーバーヘッドが積み重なって、vardecimal ストレージ形式による削減量を上回ることを意味しています。めったにありませんが、このような場合は vardecimal ストレージ形式を使用しないでください。

テーブルで vardecimal ストレージ形式が有効になっている場合は、sp_estimated_rowsize_reduction_for_vardecimal を使用して、vardecimal ストレージ形式を無効にした場合の平均行サイズを見積もることができます。

権限

テーブルに対する CONTROL 権限が必要です。

次の例では、AdventureWorks データベースの Production.WorkOrderRouting テーブルを圧縮した場合の行サイズの削減量を見積もります。

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