Estou usando o Postgres 9.5. Vou executar muito esse tipo de consulta
SELECT *
FROM mydb_article
where regexp_replace(url, '\?.*$', '') = :url_wo_query_string
então imaginei que precisaria criar um índice funcional na minha tabela para essa operação. Então eu tentei
mydb=> CREATE INDEX my_article_idx ON mydb_article regexp_replace(url, '\?.*$', '');
ERROR: syntax error at or near "regexp_replace"
LINE 1: CREATE INDEX my_article_idx ON mydb_article regexp_repl...
Minha pergunta é: qual é o tipo de índice mais apropriado que devo usar e, se for o acima, o que mais preciso fazer para que as coisas funcionem corretamente?
A lista de expressões para um índice deve ser colocada entre parênteses
on table_name (a,b,c)
. Se a expressão de índice não for apenas um nome de coluna, a própria expressão também deverá ser colocada entre parênteses: