ttOptUpdateStats
TBL_STATS
およびCOL_STATS
を更新します。表が大きい場合、このプロセスには多少時間がかかる可能性があります。行が更新されても統計は自動的に計算されないため、このプロシージャをコールすることによって、アプリケーションで明示的に統計を計算する必要があります。
tblName
が指定されていない場合、このプロシージャは現在のユーザーが所有するすべての表に対して処理されます。ユーザーがインスタンス管理者である場合、インスタンス管理者が所有する表のみが更新されます。表がユーザーによって所有されていない場合、ユーザーは自分のユーザー名で表名を修飾して、現在のユーザーの統計を更新できます。
統計が更新されたかどうかを判断するには、この操作を実行する前と後で、システム表SYS.COL_STATS
およびSYS.TBL_STATS
を確認します。
必要な権限
ユーザーが表の所有者である場合またはtblName
が指定されていない場合、このプロシージャに権限は不要です。ユーザーが表の所有者でない場合、このプロシージャにはALTER ANY TABLE
権限が必要です。
TimesTen ScaleoutおよびTimesTen Classicでの使用
このプロシージャは、TimesTen Classicでサポートされています。
TimesTen Scaleoutアプリケーションでこの組込みプロシージャをコールできます。
TimesTen Scaleoutでは、このプロシージャはグリッド内のすべての要素に対して実行されます。
関連ビュー
このプロシージャには関連ビューはありません。
構文
ttOptUpdateStats(['tblName'], [invalidate], [option])
パラメータ
ttOptUpdateStats
には、次のパラメータがあります。
パラメータ | 型 | 説明 |
---|---|---|
|
|
アプリケーション表の名前。表の所有者を含めることができます。 表名の指定にシノニムは使用できません。 |
|
|
0 (no)または1 (yes)。
|
|
|
完全な時間隔の統計情報の収集をするかどうかを指定します。このオプションに有効な値は、次のとおりです。
1 - 完全な時間隔統計を収集しません。単一の時間隔統計のみが収集されます。
詳細は、次のノートを参照してください。 |
結果セット
ttOptUpdateStats
は結果を返しません。
例
CALL ttOptUpdateStats ( 'ACCTS', 1 );
ACCTS
表を更新し、ACCTS
表を参照するすべてのコマンドを次回の実行時に再準備します。
CALL ttOptUpdateStats('', 1);
現在のユーザーのすべての表を更新し、それらの表に対するコマンドを次回の実行時に再準備します。
CALL ttOptUpdateStats('ACCTS', 0, 1);
単一の時間隔統計を収集します。
ノート
指定した表名が空の文字列である場合、統計は現在のユーザーのすべての表について更新されます。
完全な時間隔統計を収集する場合、表の列の総数は20以下の時間隔に分割され、各時間隔の配分が統計に記録されます。新しい統計には、次の情報が含まれます。
-
時間隔の数
-
列の
NULL
値の総数 -
列の
NON NULL UNIQUE
値の総数 -
表の行の総数
-
時間隔情報(各時間隔には次の情報が含まれます)
-
最小値
-
最大値
-
最大頻度の値
-
最大頻度の値の数
-
最大頻度の値と異なる値の行の数
-
最大頻度の値以外の一意値の数
-
完全な時間隔統計を収集するには、データをソートする必要があります。
完全な時間隔統計を選択しない場合、全体の配分を単一の時間隔として処理することにより、統計が収集されます。
TimesTenでは、パフォーマンス上の理由から、統計の計算時に表ロックおよび行ロックは保持されません。ただし、TimesTenシステム表に対するロックは保持されます。統計の計算をそのように行った場合でも、パフォーマンスが低下する可能性があります。統計は、正確に計算するよりも推定した方が一般にパフォーマンスは向上します。統計の推定については、「ttOptEstimateStats」を参照してください。
システム表を更新する権限がある場合、空の表リストを指定して統計を見積もり、または更新すると、システム表の統計も更新されます。