GATHER_INDEX_STATS プロシージャは、インデックス統計情報を収集するために使用されます。
機能の適用範囲
この内容はOceanBaseデータベースEnterprise Editionにのみ適用されます。OceanBaseデータベースCommunity EditionはMySQLモードのみを提供します。
構文
DBMS_STATS.GATHER_INDEX_STATS (
ownname VARCHAR2,
indname VARCHAR2,
partname VARCHAR2 DEFAULT NULL,
estimate_percent NUMBER DEFAULT AUTO_SAMPLE_SIZE,
stattab VARCHAR2 DEFAULT NULL,
statown VARCHAR2 DEFAULT NULL,
degree NUMBER DEFAULT NULL,
granularity VARCHAR2 DEFAULT DEFAULT_GRANULARITY,
no_invalidate BOOLEAN DEFAULT FALSE,
force BOOLEAN DEFAULT FALSE,
tabname VARCHAR2 DEFAULT NULL
);
パラメータ説明
パラメータ |
説明 |
|---|---|
| ownname | ユーザー名。ユーザー名をNULLに設定した場合、デフォルトで現在ログインしているユーザー名が使用されます。 |
| indname | インデックス名。 |
| partname | パーティション名。 |
| estimate_percent | 行の推定割合。[0.000001,100]の範囲が有効です。 |
| stattab | 統計情報を格納するユーザーテーブルの名前を指定します。 |
| statown | 統計情報を格納するユーザーテーブルのユーザー名を指定します。 |
| degree | 並列度。デフォルト値はNULLです。NULLはCREATE TABLEまたはALTER TABLEステートメントのDEGREE句で指定されたテーブルのデフォルト値を使用することを意味します。DEGREE=>NULLやDEGREE=>nを使用する場合、オブジェクトのサイズが並列実行を保証しない場合、DBMS_STATSは直列実行を採用する可能性があります。 |
| granularity | 収集するインデックス統計情報の粒度(テーブルがパーティション化されている場合にのみ適用されます)。
|
| no_invalidate | 統計情報収集時にPlan Cacheをフラッシュするかどうかを指定します。TRUEに設定すると、統計情報収集時にPlan Cacheをフラッシュしません。 |
| force | ロックの状態を無視して強制的に収集するかどうかを指定します。デフォルトはFALSEです。TRUEに設定すると、統計情報がロックされていてもインデックス統計情報を収集します。 |
| tabname | テーブル名。 |
異常
エラーコード |
説明 |
|---|---|
| OBE-20000 | インデックスが存在しないか、権限が不足しています。 |
| OBE-20001 | 入力値が誤っています。 |
使用方法
このプロシージャを呼び出すには、テーブルの所有者である必要があります。SYS が所有するオブジェクトを使用する場合は、テーブルの所有者または SYSDBA 権限が必要です。
例
ユーザー testUser01 の tbl1 テーブルのインデックス idx1 の統計情報を収集します。
obclient> CALL DBMS_STATS.GATHER_INDEX_STATS('testUser01', 'idx1', degree=>4, tabname=>'tbl1');
Query OK, 0 rows affected
説明
OceanBaseデータベースのOracleモードでは、インデックスは現在のユーザーにとって一意であるため、tabname を指定する必要はありません。しかし、MySQLモードではインデックスが現在のユーザーにとって非一意であるため、テーブル名を明示的に指定する必要があります。