Vous pouvez créer un index trigramme qui prendra en charge votre requête.
Pour cela, vous avez besoin du pg_trgm
extension; exécutez ce qui suit en tant que superutilisateur :
CREATE EXTENSION pg_trgm;
Ensuite, vous pouvez créer un index GIN :
CREATE INDEX ON dir USING gin (path gin_trgm_ops);
Cet index peut être utilisé avec votre deuxième et troisième approche, il devrait donc faire l'affaire pour vous.
Avec des modèles courts comme celui de vos exemples, l'index ne sera pas très efficace.
Vous pouvez également utiliser un index GiST, qui sera probablement plus petit, mais plus lent à rechercher.
Notez que vous pouvez également utiliser cet index avec des modèles commençant par %
.