Производительность запросов в PostgreSQL с использованием 'like to'

Мне нужно извлечь определенные строки из таблицы в зависимости от определенных значений в определенном столбце с именемcolumnX в примере:

select *
from tableName 
where columnX similar to ('%A%|%B%|%C%|%1%|%2%|%3%')

Так что еслиcolumnX содержит хотя бы одно из указанных значений (A, B, C, 1, 2, 3), я сохраню строку.

Я могу'найти лучший подход, чем использованиепохожий на, Проблема в том, что запрос занимает слишком много времени для таблицы с более чем миллионом строк.

мы попробовали проиндексировать его:

create index tableName_columnX_idx on tableName (columnX) 
where columnX similar to ('%A%|%B%|%C%|%1%|%2%|%3%')

Однако, если условие является переменным (значения могут отличаться от A, B, C, 1, 2, 3), для каждого условия мне потребуется отдельный индекс.

Есть ли лучшее решение для этой проблемы?

РЕДАКТИРОВАТЬ: Спасибо всем за отзыв. Похоже, яВозможно, мы достигли этой точки из-за ошибки проектирования (тема I 'мы разместили вотдельный вопрос).

Ответы на вопрос(4)

Ваш ответ на вопрос