Zapytanie o wydajność w PostgreSQL przy użyciu „podobnego do”

Muszę pobrać pewne wiersze z tabeli w zależności od pewnych wartości w określonej kolumnie o nazwiecolumnX w przykładzie:

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

Więc jeślicolumnX zawiera co najmniej jedną z podanych wartości (A, B, C, 1, 2, 3), zachowam wiersz.

Nie mogę znaleźć lepszego podejścia niż użyciepodobny do. Problem polega na tym, że zapytanie zajmuje zbyt dużo czasu dla tabeli zawierającej ponad milion wierszy.

Próbowałem go zaindeksować:

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

Jeśli jednak warunek jest zmienny (wartości mogą być inne niż A, B, C, 1, 2, 3), potrzebowałbym innego indeksu dla każdego warunku.

Czy jest jakieś lepsze rozwiązanie tego problemu?

EDIT: Dziękuję wszystkim za opinie. Wygląda na to, że udało mi się osiągnąć ten punkt może z powodu błędu projektowego (temat, który opublikowałem woddzielone pytanie).

questionAnswers(4)

yourAnswerToTheQuestion