5 TimesTen問合せオプティマイザの使用
問合せオプティマイザで使用される表および列の統計の更新
問合せオプティマイザは、TimesTenデータベースのシステム表に格納されている統計を使用して、文の最適な実行計画を決定します。TimesTenでは、表レベルの統計をSYS.TBL_STATS
表に格納します。列の最小値と最大値および一意の値の数など列レベルの統計は、SYS.COL_STATS
表に格納されています。
通常の表およびキャッシュ表で更新が発生した場合、表および列の統計は計算されません。かわりに、明示的なリクエストが発生した場合に統計が更新されます。
ユーザーが所有するすべての表またはユーザーが所有する特定の表の統計が更新できます。
-
すべての表の統計を更新するには、「表」ノードを右クリックして、「統計」→「更新」を選択します。
-
特定の表の統計を更新するには、「表」ノードの左側にある「+」をクリックします。表の名前を右クリックして、「統計」→「更新」を選択します。
表が見つからない場合は、「表の特性の表示」を参照してください。
「統計の更新」ダイアログの「プロンプト」タブで、「参照したコマンドの無効化」を選択して、統計が更新された表を参照する文の実行計画を無効化します。文の実行計画を無効化する場合は、次回の実行時にその文が再コンパイルまたは再準備されます。
「表統計の間隔タイプ」で、完全な間隔を選択して、表の行を2つ以上の間隔に区切り、各間隔で統計を計算するか、単一の間隔を選択して、一連の行全体を単一の間隔として統計を計算します。表でレンジ索引を定義して、完全な間隔の統計を計算する必要があります。
「適用」をクリックします。
表のオプティマイザの統計を表示するには、表の名前をクリックします。
探している表が見つからない場合は、「TimesTenデータベース・オブジェクトの検索」を参照してください。
表のタブ内の「統計」タブの上部のセクションには、次のような表の統計が表示されます。
-
表内の行数
-
表の統計の最新の更新を示すタイムスタンプ
下部のセクションには、列統計が表示されます。各列に次の情報が表示されます。
-
列の名前。
-
統計を計算するためにデータを区切る間隔の数
-
NULL
値の合計数 -
NULL
値を許可しない一意の値の合計数 -
各間隔の行の合計数
SQL Developerにより、各列の各間隔の次の値が表示されます。
-
最も頻繁に発生する値以外の一意の値の数
-
最も頻繁に発生する値以外の値を含む行の数
-
最も頻繁に発生する値が含まれる行の数
-
最小値
-
最大値
-
最大頻度の値
問合せオプティマイザの統計の詳細は、Oracle TimesTen In-Memory Database概要の統計、Oracle TimesTen In-Memory Databaseオペレーション・ガイドの最適化を実行するタイミング、またはOracle TimesTen In-Memory DatabaseリファレンスのttOptUpdateStatsを参照してください。
表の統計のエクスポート
一連のSQL文を生成して、表の統計を現在の状態にリストアできます。SQL文は、単一の表用に、または、接続ユーザーがアクセス権限を持つ複数のユーザー表用に生成できます。表の統計を.sql
ファイルにエクスポートした後で、SQL Developerの.sql
ファイルを開き、スクリプト・ファイルを実行することによって、表の統計をインポートできます。
現在のTimesTen表の統計をエクスポートするには、SQL Developerのメイン・ページを開いている必要があります。