例ではcolumnXという名前の特定の列の特定の値に応じて、テーブルから特定の行を取得する必要があります。
select *
from tableName
where columnX similar to ('%A%|%B%|%C%|%1%|%2%|%3%')
したがって、columnXに指定された値(A、B、C、1、2、3)の少なくとも1つが含まれている場合、行を保持します。
に似たものを使用するよりも良いアプローチを見つけることができません。問題は、100万行を超えるテーブルに対してクエリに時間がかかりすぎることです。
インデックスを作成してみました:
create index tableName_columnX_idx on tableName (columnX)
where columnX similar to ('%A%|%B%|%C%|%1%|%2%|%3%')
ただし、条件が可変である場合(値は、A、B、C、1、2、3以外である可能性があります)、条件ごとに異なるインデックスが必要になります。
この問題に対するより良い解決策はありますか?
編集:フィードバックをありがとうございました。おそらく設計ミスが原因で、これまでに達成したようです(別の質問に投稿したトピック)。