sp_estimated_rowsize_reduction_for_vardecimal (Transact-SQL)

適用対象:SQL Server

テーブルで vardecimal ストレージ形式を有効にした場合、行の平均サイズの削減を見積もります。 この数値を使用して、テーブル サイズ全体の削減量を見積もることができます。 統計サンプリングは、行サイズの平均減少を計算するために使用されるため、推定値のみと見なします。 vardecimal ストレージ形式を有効にした後、まれに行サイズが増加する場合があります。

Note

この機能は、 SQL Serverの将来のバージョンで削除される予定です。 新規の開発作業ではこの機能を使用しないようにし、現在この機能を使用しているアプリケーションは修正することを検討してください。 代わりに ROW 圧縮と PAGE 圧縮を使用してください。 詳細については、「 Data Compression」を参照してください。 テーブルとインデックスのサイズに対する圧縮効果については、「sp_estimate_data_compression_savings (Transact-SQL)」を参照してください

Transact-SQL 構文表記規則

構文

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

引数

[ @table = ] 'table' ストレージ形式を変更するテーブルの 3 つの部分名を指定します。 table is nvarchar(776).

リターン コードの値

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

結果セット

次の結果セットが返され、現在のテーブル サイズと推定されるテーブル サイズの情報が提供されます。

列名 データ型 説明
avg_rowlen_fixed_format decimal (12, 2) 固定 10 進ストレージ形式で行の長さを表します。
avg_rowlen_vardecimal_format decimal (12, 2) vardecimal ストレージ形式が使用されている場合の平均行サイズを表します。
row_count int テーブルに含まれる行の数です。

解説

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

sp_estimated_rowsize_reduction_for_vardecimal結果、テーブルが大きくなることが示された場合、テーブル内の多くの行で 10 進データ型のほぼ完全な精度が使用され、vardecimal ストレージ形式に必要な小さなオーバーヘッドの追加が、vardecimal ストレージ形式からの節約よりも大きくなります。 このまれなケースでは、vardecimal ストレージ形式を有効にしないでください。

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

アクセス許可

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

次の例では、データベース内のテーブルが圧縮されている場合に Production.WorkOrderRouting 、行サイズの削減を AdventureWorks2022 見積もります。

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

参照

sp_db_vardecimal_storage_format (Transact-SQL)
sp_tableoption (Transact-SQL)