Производительность запросов в 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 'мы разместили вотдельный вопрос).