デフォルトでは、Oracle Textはコストベース・オプティマイザ(CBO)を使用し、問合せに対する最適な実行計画を決定します。
オプティマイザを使用して最適なコストを見積るために、問い合せる表の統計を次のように計算できます。
ANALYZE TABLE <table_name> COMPUTE STATISTICS;
また、次のように表のサンプルの統計を見積ることができます。
ANALYZE TABLE <table_name> ESTIMATE STATISTICS 1000 ROWS;
または
ANALYZE TABLE <table_name> ESTIMATE STATISTICS 50 PERCENT;
統計の収集は、DBMS_STATS.GATHER_TABLE_STATS
プロシージャを使用してパラレルに行うこともできます。
begin DBMS_STATS.GATHER_TABLE_STATS('owner', 'table_name', estimate_percent=>50, block_sample=>TRUE, degree=>4) ; end ;
これらの文は、table_nameに関連付けられたすべてのオブジェクトの統計を収集します。オブジェクトには、その表の列とその表に関連付けられたすべての索引(Bツリー、ビットマップまたはテキスト・ドメイン)も含まれます。
表の統計を再収集するには、ANALYZE
文を必要な回数入力するか、DBMS_STATS
パッケージを使用します。
テキスト・ドメイン索引の統計を収集することによって、Oracle Databaseのコストベース・オプティマイザでは、次のタスクを実行できます。
CONTAINS
述語の選択性の見積り
テキスト索引を使用したときのI/OコストとCPUコスト(ドメイン索引を使用してCONTAINS
述語を処理するときのコスト)の見積り
CONTAINS
の起動ごとのI/OコストとCPUコストの見積り
CONTAINS
述語の選択性がわかっていると、構造化問合せなど、複数の述語が含まれた問合せを行う場合に役立ちます。このように、コストベース・オプティマイザでは、ドメイン索引を使用してCONTAINS
を評価するか、あるいはCONTAINS
述語をポスト・フィルタとして適用するかを、より適切に判断できます。