PostgreSQL
 sql >> Base de données >  >> RDS >> PostgreSQL

Stratégie d'indexation pour différentes combinaisons de clauses WHERE incl. modèles de texte

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 :

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 :

  1. plus court
  2. moins déroutant
  3. simplifie le travail du planificateur Postgres (très légèrement moins cher)
  4. correct

    Si vous transmettez une chaîne avec des caractères spéciaux par inadvertance, vous risquez d'obtenir des résultats incorrects. Voir :