Votre prédicat ajouté utilise le LIKE
opérateur :
AND network LIKE '%'
Le plan de requête réel dépend de ce que vous passez au lieu de «%». Mais, généralement, les indices de Btree simples sont inutiles pour cela. Vous aurez besoin d'un index du trigramme ou d'utiliser l'infrastructure de recherche de texte ou similaire, selon les modèles que vous pourriez rechercher.
Voir :
- Variations des performances des requêtes PostgreSQL LIKE
- Correspondance de modèle avec LIKE, SIMILAR TO ou des expressions régulières dans PostgreSQL
Vous pouvez même combiner plusieurs stratégies d'indexation. Exemple :
Si c'est censé être :
AND network = '<input_string>'
alors, bien sûr, utilisez réellement le =
opérateur, pas LIKE
. Raisons par ordre croissant d'importance :
- plus court
- moins déroutant
- simplifie le travail du planificateur Postgres (très légèrement moins cher)
-
correct
Si vous transmettez une chaîne avec des caractères spéciaux par inadvertance, vous risquez d'obtenir des résultats incorrects. Voir :