FILTER
BY
列のMDATA
へのマッピングがサポートされているため、RANGE
およびLIKE
のサポートされた機能を制限することで、問合せのパフォーマンスは等価性検索に対して最適化されます。ただし、FILTER
BY
列が連続した値を含むかまたはそのカーディナリティが非常に高い場合は、FILTER
BY
列のMDATA
へのマッピングはお薦めしません。このようなマッピングは、非常に時間がかかり、$I
表の範囲が限定され、$X
のパフォーマンスが低下する可能性があります。このような連続した列の一例として、DATE
スタンプを使用した場合があります。このような連続した列の場合は、SDATA
へのマッピングをお薦めします。
SORT
述語およびFILTER
BY
述語をCDIに含めるか含めないかには、次のヒントを使用できます。
DOMAIN_INDEX_SORT
。問合せオプティマイザは、適用可能なソート条件を、指定したコンポジット・ドメイン索引に含めようとします。
DOMAIN_INDEX_NO_SORT
。問合せオプティマイザは、ソート条件を、指定したコンポジット・ドメイン索引に含めないようにします。
DOMAIN_INDEX_FILTER
(table name index name)。問合せオプティマイザは、適用可能なFILTER
BY
述語を、指定したコンポジット・ドメイン索引に含めます。
DOMAIN_INDEX_NO_FILTER
(table name index name)。問合せオプティマイザは、適用可能なFILTER
BY
述語を、指定したコンポジット・ドメイン索引に含めないようにします。
注意:
domain_index_filter
ヒントは、問合せオプティマイザにCDIの使用を強制しません。かわりに、コストベース・オプティマイザがCDIの使用を選択している場合は、フィルタ述語も索引に含められます。問合せオプティマイザにCDI索引の選択を強制するには、さらにINDEX
ヒントも使用する必要があります。
例7-1 CDIヒントを使用したテキスト問合せのパフォーマンス・チューニング
次の例では、表books
に対し、最適化された問合せを実行しています。
SELECT bookid, pub_date, source FROM (SELECT /*+ domain_index_sort domain_index_filter(books books_ctxcdi) */ bookid, pub_date, source FROM books WHERE CONTAINS(text, 'aaa',1)>0 AND bookid >= 80 ORDER BY PUB_DATE desc nulls last, SOURCE asc nulls last, score(1) desc) WHERE rownum < 20;