すでに述べたように、名前の列にctxコンテキストインデックスを追加できます。
少数のレコードが更新されると仮定すると、1つのオプションは、インデックスを毎日更新することです。 (そしてそれがいつ起こったかを記録する)
次に、検索対象のテーブルに最終更新日列とインデックスを追加します。
ctxインデックスをスキャンして、変更されていない古いデータの大部分を探し、従来のLIKEe.gを使用して更新されたデータのわずかな割合から選択できるはずです。
WHERE (lastupdated<lastrefresh AND contains(name,'%ABC%'))
OR (lastupdated>lastrefresh AND name like '%ABC%')
注:クエリプランが少し精神的になる場合があります(行IDへのビットマップ変換がたくさんあります)。その場合、ORの2つの部分をUNIONALLクエリに分割します。例:
SELECT id FROM mytable
WHERE
(lastupdate>lastrefresh and name LIKE '%ABC%')
UNION ALL
SELECT id FROM mytable
WHERE lastupdate<lastrefresh and CONTAINS(name, '%ABC%', 1) > 0