I’ve got a table with approximately 5.5 million rows, and one column that is frequently searched is of type varchar(50) and we just put a trigram index on it. Now, if we search “where bld_city = ‘baskingridge’”, explain says a sequential table scan is going to be used, but if I change the query to use “where bold_city like ‘basking%’”, then explain correctly shows that a bitmap index scan will be performed. Why would these two forms use different approaches? I’m a bit confused.
If you really don't want to build an extra btree index, you could just write the query using LIKE with no wildcards: "where bld_city LIKE ‘baskingridge’".
Also, if all your queries will be front-anchored (wildcards only at the end, like in your example) then pg_trgm is overkill in the first place. You can just use text_pattern_ops with the default btree index instead. It will support both equality and prefix matching.