CONTAINS問合せを応答時間短縮のために最適化すると、ヒットリストの最もスコアの高いドキュメントが必要な場合に、高速なソリューションとなります。
次の例では、標準出力に最初の20個のヒットを戻します。この例では、FIRST_ROWS(n)ヒントとカーソルを使用します。
declare
cursor c is
select /*+ FIRST_ROWS(20) */ title, score(1) score
from news where contains(txt_col, 'dog', 1) > 0 order by score(1) desc;
begin
for c1 in c
loop
dbms_output.put_line(c1.score||':'||substr(c1.title,1,50));
exit when c%rowcount = 21;
end loop;
end;
/
問合せヒントの使用以外にも、次のような要因が問合せ応答時間に影響します。
表統計の収集
メモリー割当て
ソート
元表に存在するLOB列
パーティション化
並列性
問合せで語句を拡張する回数