Desempenho de consulta no PostgreSQL usando 'similar a'

Eu preciso recuperar certas linhas de uma tabela, dependendo de certos valores em uma coluna específica, chamadacolunaX no exemplo:

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

Então secolunaX contém pelo menos um dos valores especificados (A, B, C, 1, 2, 3), vou manter a linha.

Não consigo encontrar uma abordagem melhor do que usarigual a. O problema é que a consulta demora muito para uma tabela com mais de um milhão de linhas.

Eu tentei indexá-lo:

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

No entanto, se a condição for variável (os valores poderiam ser diferentes de A, B, C, 1, 2, 3), precisaria de um índice diferente para cada condição.

Existe alguma solução melhor para este problema?

EDIT: Obrigado a todos pelo feedback. Parece que eu cheguei a este ponto, talvez por causa de um erro de design (tópico que eu postei em umpergunta separada).

questionAnswers(4)

yourAnswerToTheQuestion