I’m using Postgres 9.5. I want to create indexes that will make queries like
select * FROM my_object_times where name like ‘Dave %’;
and
select * FROM my_object_times where name like '% LastName';
run quickly. So I created …
CREATE INDEX my_object_times_name_idx ON my_object_times (name text_pattern_ops);
CREATE INDEX my_object_times_rev_name_idx ON my_object_times (reverse(name) text_pattern_ops);
This works fine for the first case, in which I can see my index being used, but in the second case, “Explain” does not show my index being utilized …
my_db=> explain select * FROM my_object_times where name like '% LastName';
QUERY PLAN
------------------------------------------------------------------
Seq Scan on my_object_times (cost=0.00..136594.69 rows=51 width=221)
Filter: ((name)::text ~~ '% LastName'::text)
How do I get my index to be in used in the second case?