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;