メインコンテンツまでスキップ
に最終更新

ALTER STATS

説明​

指定したテーブルの指定した列の統計情報を手動で変更します。「統計情報」の章を参照してください。

構文​

ALTER TABLE <table_name>
[ INDEX <index_name> ]
MODIFY COLUMN <column_name>
SET STATS (<column_stats>)

ここで:

column_stats
: -- column stats value
("key1" = "value1", "key2" = "value2" [...])

必須パラメータ

<table_name>

テーブルの識別子(名前)を指定します。

<column_name>

列の識別子(名前)を指定します。<index_name> を指定しない場合は、ベーステーブルの列名です。

<column_stats>

設定する統計情報の値を key = value 形式で指定します。key と value はどちらも引用符で囲み、キーと値の組はカンマで区切ります。設定できる統計情報は次のとおりです。

row_count、総行数

ndv、列のカーディナリティ

num_nulls、列に含まれる NULL 値の数

data_size、列の合計サイズ

min_value、列の最小値

max_value、列の最大値

このうち row_count は必須で、その他の属性は省略できます。省略した場合、その列の該当する統計情報属性の値は空になります。

オプションパラメータ

<index_name>

同期マテリアライズドビュー(「同期マテリアライズドビュー」の章を参照)の識別子(名前)を指定します。テーブルには 0 個以上のマテリアライズドビューを作成できます。マテリアライズドビュー内の列の統計情報を設定する場合は、<index_name> でそのマテリアライズドビューの名前を指定します。指定しない場合は、ベーステーブル内の列の属性を設定します。

アクセス制御要件

この SQL コマンドを実行するユーザーには、少なくとも次の権限が必要です。

権限オブジェクト備考
ALTER_PRIVテーブル

使用上の注意

ユーザーがテーブルに統計情報を手動で注入すると、手動で注入した統計情報が上書きされないよう、そのテーブルは統計情報の自動収集(「統計情報の自動収集」の章を参照)の対象から外れます。注入した統計情報を使用しなくなった場合は、drop stats ステートメントで注入済みの情報を削除すると、そのテーブルで自動収集を再開できます。

例

  • part テーブルの p_partkey 列に統計情報を注入します(index_name を指定していないため、ベーステーブルの列です)。

    alter 
    table part
    modify column p_partkey
    set stats ('row_count'='2.0E7', 'ndv'='2.0252576E7', 'num_nulls'='0.0', 'data_size'='8.0E7', 'min_value'='1', 'max_value'='20000000');
  • part テーブルの index1 マテリアライズドビューの col1 列に統計情報を注入します(index_name を指定しているため、マテリアライズドビューの列です)。

    alter 
    table part index index1
    modify column col1
    set stats ('row_count'='2.0E7', 'ndv'='2.0252576E7', 'num_nulls'='0.0', 'data_size'='8.0E7', 'min_value'='1', 'max_value'='20000000');