Du kan oprette et trigramindeks, der understøtter din forespørgsel.
Til det har du brug for pg_trgm
udvidelse; kør følgende som superbruger:
CREATE EXTENSION pg_trgm;
Så kan du oprette et GIN-indeks:
CREATE INDEX ON dir USING gin (path gin_trgm_ops);
Dette indeks kan bruges med din anden og tredje tilgang, så det burde gøre tricket for dig.
Med korte mønstre som det i dine eksempler, vil indekset ikke være særlig effektivt.
Du kan også bruge et GiST-indeks, som sandsynligvis vil være mindre, men langsommere at søge.
Bemærk, at du også kan bruge det indeks med mønstre, der starter med %
.