ヘッダーをスキップ
Oracle® Textアプリケーション開発者ガイド
12cリリース1 (12.1)
B71317-04
  目次へ移動
目次
索引へ移動
索引

前
次
 

ブロック操作による問合せのチューニング

複数の述語を持つ問合せを発行すると、実行計画でブロック操作が行われる場合があります。たとえば、次の複合問合せについて考えます。

select docid from mytab where contains(text, 'oracle', 1) > 0 
  AND colA > 5 
  AND colB > 1 
  AND colC > 3; 

すべての述語が非選択的で、colA、colBおよびcolCがビットマップ索引を持つと想定します。Oracle Databaseのコストベース・オプティマイザでは、次の実行計画を選択します。

TABLE ACCESS BY ROWIDS
  BITMAP CONVERSION TO ROWIDS
    BITMAP AND
      BITMAP INDEX COLA_BMX
      BITMAP INDEX COLB_BMX
      BITMAP INDEX COLC_BMX
      BITMAP CONVERSION FROM ROWIDS
        SORT ORDER BY
          DOMAIN INDEX MYINDEX

BITMAP ANDはブロック操作であるため、Oracle Textでは、BITMAP AND操作を実行する前に、Oracle Textのドメイン索引から戻されたROWIDとスコアのペアを一時的に保存する必要があります。

Oracle Textでは、これらのROWIDとスコアのペアをメモリーに保存しようとします。ただし、これらのROWIDとスコアのペアを含む結果セットのサイズがSORT_AREA_SIZE初期化パラメータの値を超える場合は、Oracle Textにより、これらの結果がディスク上の一時セグメントに排出されます。

ディスクに結果を保存すると余分なオーバーヘッドが発生するため、次のようにALTER SESSIONを使用してSORT_AREA_SIZEパラメータを増やすことによって、パフォーマンスが向上します。

alter session set SORT_AREA_SIZE = <new memory size in bytes>;

たとえば、バッファを約8MBに設定するには、次の文を入力します。

alter session set SORT_AREA_SIZE = 8300000;

関連項目:

SORT_AREA_SIZEの詳細は、『Oracle Databaseパフォーマンス・チューニング・ガイド』および『Oracle Databaseリファレンス』を参照してください。