SET_COLUMN_STATSプロシージャは、列レベルの基本的な統計情報を設定するために使用されます。
適用対象
この内容はOceanBaseデータベースEnterprise Editionにのみ適用されます。OceanBaseデータベースCommunity EditionはMySQLモードのみを提供します。
構文
DBMS_STATS.SET_COLUMN_STATS (
ownname VARCHAR2,
tabname VARCHAR2,
colname VARCHAR2,
partname VARCHAR2 DEFAULT NULL,
distcnt NUMBER DEFAULT NULL,
density NUMBER DEFAULT NULL,
nullcnt NUMBER DEFAULT NULL,
avgclen NUMBER DEFAULT NULL,
no_invalidate BOOLEAN DEFAULT FALSE,
force BOOLEAN DEFAULT FALSE);
パラメータの説明
| パラメータ | 説明 |
|---|---|
| ownname | ユーザー名。ユーザー名を NULL に設定した場合、現在ログインしているユーザー名がデフォルトで使用されます。 |
| tabname | この列が属するテーブルの名前。 |
| colname | 列名または拡張名。 |
| partname | 統計情報を格納するテーブルパーティションの名前。テーブルがパーティション化されており、かつ partname が NULL の場合、統計情報はグローバルなテーブルレベルに格納されます。 |
| distcnt | 列レベルのNDV値。 |
| density | 列レベルの疎密度。この値が NULL であり、かつ distcnt が NULL でない場合、密度値は distcnt となります。 |
| nullcnt | 列レベルの NULL 値の数。 |
| avgclen | 列レベルの平均長(バイト単位)。 |
| no_invalidate | 統計情報収集時にPlan Cacheをフラッシュするかどうか。TRUE に設定すると、統計情報収集時にPlan Cacheをフラッシュしません。 |
| force | ロック状態を無視して強制的に統計情報を収集するかどうか。デフォルトは FALSE です。TRUE に設定すると、統計情報がロックされていても収集されます。 |
異常時
| エラーコード | 説明 |
|---|---|
| OBE-20000 | 対象のオブジェクトが存在しないか、権限が不足しています。 |
| OBE-20001 | 無効または矛盾する入力値です。 |
| OBE-20005 | 対象のオブジェクトの統計情報がロックされています。 |
使用方法
OceanBaseデータベースの現行バージョンでは、ユーザー定義の統計情報を処理する際に、SET_COLUMN_STATS で指定される統計情報のタイプは辞書に格納されているタイプに限られます。この統計タイプが NULL の場合、インデックスまたは列に関連付けられた統計タイプが格納されます。
このプロシージャを呼び出すには、テーブルの所有者である必要があります。SYS が所有するオブジェクトについては、テーブルの所有者であるか、SYSDBA 権限を持っている必要があります。
値が TRUE および FALSE のパラメータについては、BEGIN ... END ブロック内でこのプロシージャを実行する必要があります。
例
ユーザー testUser01 のテーブル tbl1 の col1 列のNDVを10、NULL 値の数を10に設定します。
obclient> CALL DBMS_STATS.SET_COLUMN_STATS('testUser01', 'tbl1', 'col1', distcnt=>10, nullcnt=>10);
Query OK, 0 rows affected