Estou tentando otimizar a consulta com a cláusula:
WHERE LOWER(CAST(\"my_table\".\"id\" as TEXT) LIKE '%456%'
Resolvi criar um índice de trigramas para ele.
CREATE INDEX index_name ON my_table USING gin (id gin_trgm_ops);
Mas parece que não posso fazer isso para um tipo inteiro:
ERROR: operator class "gin_trgm_ops" does not accept data type bigint
É possível? Provavelmente algum tipo de conversão necessário durante a criação do índice ...
Você teria que criar o índice do trigrama na expressão completa à esquerda do
LIKE
operador.O
lower
é desnecessário, e você deve omiti-lo.