Abfrageleistung in PostgreSQL mit 'similar to'

Ich muss bestimmte Zeilen aus einer Tabelle abrufen, abhängig von bestimmten Werten in einer bestimmten Spalte mit dem NamencolumnX im Beispiel:

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

Also wenncolumnX Enthält mindestens einer der angegebenen Werte (A, B, C, 1, 2, 3), behalte ich die Zeile.

Ich kann keinen besseren Ansatz finden als mitähnlich zu. Das Problem ist, dass die Abfrage für eine Tabelle mit mehr als einer Million Zeilen zu lange dauert.

Ich habe versucht, es zu indizieren:

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

Wenn die Bedingung jedoch variabel ist (die Werte können von A, B, C, 1, 2, 3 abweichen), würde ich für jede Bedingung einen anderen Index benötigen.

Gibt es eine bessere Lösung für dieses Problem?

EDIT: Vielen Dank für das Feedback. Es sieht so aus, als hätte ich diesen Punkt vielleicht aufgrund eines Designfehlers erreicht (Thema, das ich in a gepostet habe)getrennte Frage).

Antworten auf die Frage(4)

Ihre Antwort auf die Frage