次の構造化問合せは、統計を最適化する例です。
select score(1) from tab where contains(txt, 'freedom', 1) > 0 and author = 'King' and year > 1960;
author列はVARCHAR2
型で、year列はNUMBER
型であるとします。また、author
列にはBツリー索引があるとします。
また、構造化述語author
はCONTAINS
述語およびyear
述語と比較してきわめて厳密であると想定しています。つまり、構造化述語(author = 'King')は、year
述語およびCONTAINS
述語と比較して、かなり少ない数の行(たとえば、それぞれ1000行および1500行に対して5行)を戻すと想定します。
このような状況の場合、Oracle Textでは、最初に構造化述語(author = 'King')にBツリー索引のレンジ・スキャンを行い、次にROWIDで表アクセスを行った後、Bツリーの表アクセスから戻された行に他の2つの述語を適用することで、この問合せをより効率的に行うことができます。