10.3 スループット向上のための問合せの最適化

スループット向上のために問合せを最適化すると、デフォルトではすべてのヒットが最短時間で戻されます。

次に、スループット向上のために問合せを明示的に最適化する方法を示します。

  • CHOOSEモードおよびALL ROWSモード: デフォルトでは、CHOOSEモードおよびALL_ROWSモードで問合せを最適化します。Oracle Textでは、すべての行が最短時間で戻されます。

  • FIRST_ROWS(n)モード: FIRST_ROWS(n)モードでは、可能な場合、テキスト・ドメイン索引でスコア順にソートされた行が戻されるようにすることで応答時間を短縮するよう、Oracle Databaseのオプティマイザが最適化を行います。これは、FIRST_ROWS(n)ヒントを使用する場合のデフォルトの動作です。

    FIRST_ROWS(n)でスループットを最適化するには、DOMAIN_INDEX_NO_SORTヒントを使用します。スループットの向上とは、すべての問合せ行を最短時間で取得することです。

    次の例では、スコア順にソートした行を戻すためにテキスト・ドメイン索引を使用せずにスループットを向上させています。かわりに、CONTAINS述語を満たすすべての行が索引から取り出された後で、Oracle Textによって行がソートされます。

    select /*+ FIRST_ROWS(10) DOMAIN_INDEX_NO_SORT */ pk, score(1), col from ctx_tab 
                where contains(txt_col, 'test', 1) > 0 order by score(1) desc;

関連項目:

問合せオプティマイザの詳細、およびFIRST_ROWS(n)CHOOSEなどのヒントの使用方法は、Oracle Database SQLチューニング・ガイドを参照してください。