SET_TABLE_STATS プロシージャは、テーブルレベルの基本統計情報を設定します。
構文
DBMS_STATS.SET_TABLE_STATS (
ownname VARCHAR2,
tabname VARCHAR2,
partname VARCHAR2 DEFAULT NULL,
numrows NUMBER DEFAULT NULL,
numblks NUMBER DEFAULT NULL,
avgrlen NUMBER DEFAULT NULL,
no_invalidate BOOLEAN DEFAULT FALSE,
force BOOLEAN DEFAULT FALSE);
パラメータ説明
パラメータ |
説明 |
|---|---|
| ownname | ユーザー名。ユーザー名をNULLに設定した場合、デフォルトで現在ログインしているユーザー名が使用されます。 |
| tabname | テーブル名。 |
| partname | 統計情報を格納するテーブルのパーティション名です。テーブルがパーティション化されており、かつpartnameがNULLの場合、統計情報はグローバルなテーブルレベルに保存されます。 |
| numrows | テーブルレベルの総行数。 |
| numblks | テーブルレベルで使用されているブロック数。 |
| avgrlen | 列レベルの平均長(バイト単位)。 |
| no_invalidate | 統計情報収集時にPlan Cacheをフラッシュするかどうかを指定します。TRUEに設定すると、統計情報収集時にPlan Cacheをフラッシュしません。 |
| force | ロック状態を無視して強制的に統計情報を収集するかどうかを指定します。デフォルトはFALSEです。TRUEに設定すると、統計情報がロックされていても収集されます。 |
例外状況
エラーコード |
説明 |
|---|---|
| HY000 |
|
使用上の注意
このプロシージャを呼び出すには、テーブル所有者である必要があります。
SYSが所有するオブジェクトを使用する場合は、テーブル所有者またはSYSDBA権限が必要です。オプティマイザーは、データキャッシュを通じてインデックスまたは統計テーブルへのアクセスにおけるキャッシュ済みブロック数を推定します。操作の総コストには、キャッシュされていないブロックをディスクから読み取るI/Oコスト、バッファからキャッシュ済みブロックを取得するCPUコスト、およびデータを処理するCPUコストが含まれます。
例
ユーザー testUser01 のテーブル tbl1 の総行数を1万行に設定します。
obclient> CALL DBMS_STATS.SET_TABLE_STATS('testUser01', 'tbl1', numrows=>10000, force=>FALSE, no_invalidate=>FALSE);
Query OK, 0 rows affected