Dla własnych testów, chciałem poprawić wydajność operacji like na kolumnie, wyczytałem że możemy uzyskać to gdy założymy index o typie GIN
Więc utworzyłem index:
CREATE INDEX index_name_trigram
ON city
USING gin (name gin_trgm_ops);
lecz gdy robie explain analyse, czas wykonania jest raczej bez zmian:
explain analyse select * from city where name like '%a%' and name like '%o%' and population < (select max(c.population) from country c where surface_area > 1000);
Seq Scan on city (cost=8.46..111.84 rows=381 width=49) (actual time=0.099..1.696 rows=1027 loops=1)
Filter: ((name ~~ '%a%'::text) AND (name ~~ '%o%'::text) AND (population < $0))
Rows Removed by Filter: 3052
InitPlan 1 (returns $0)
-> Aggregate (cost=8.45..8.46 rows=1 width=4) (actual time=0.086..0.087 rows=1 loops=1)
-> Seq Scan on country c (cost=0.00..7.99 rows=185 width=4) (actual time=0.005..0.058 rows=185 loops=1)
Filter: (surface_area > '1000'::double precision)
Rows Removed by Filter: 54
Planning Time: 0.215 ms
Execution Time: 1.818 ms
Dodam, że tabela city ma 4k wpisów
Poprosze o wskazówki :)