Use extra column to save an unaccented copy of a string instead of using unaccent module
You could store an unaccented version redundantly. And create index on that column to support your queries.

Or, better yet, to avoid bloating your table with redundant data, create a functional index on the original column.  You need an IMMUTABLE function for that, while unaccent() is only STABLE. Detailed instructions:


Does PostgreSQL support “accent insensitive” collations?


Then, based on the function f_unaccent() from the linked answer:

CREATE INDEX tbl_unaccent_col_idx ON tbl(public.f_unaccent(col));


Or some other index. Maybe use the full text search (FTS) infrastructure with unaccent as dictionary. Example:


Creating a case-insensitive and accent/diacritics insensitive search on a field


Or use it in a trigram index:


Queries using GIN index on f_unaccent() seem slow?
Why does a slight change in the search term slow down the query so much?