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;