Analyse des différences de performances des requêtes PostgreSQL LIKE
L'opérateur LIKE de PostgreSQL est connu pour ses opérations gourmandes en ressources, avec des différences de temps de réponse significatives. Ce problème persiste même lorsqu'il existe un index btree sur le champ concerné (ce qui facilite généralement les requêtes LIKE).
Analyse des solutions
Certains suggèrent d'utiliser la recherche en texte intégral (FTS) pour résoudre ce problème, mais cela ne fonctionne pas pour les opérations LIKE. Le meilleur moyen est de profiter d'un type d'index spécifique :
Index des trigrammes
Installez le module pg_trgm pour créer des triples index GIN ou GiST. Les triplets capturent une séquence de trois caractères dans un mot, prenant en charge les modes LIKE et ILIKE. Pour les valeurs inférieures à trois caractères, une analyse d'index est toujours utilisée pour garantir les performances.
Correspondance de préfixe
Utilisez l'opérateur ^@ introduit dans PostgreSQL 11. Cet opérateur effectue efficacement une correspondance de préfixe sans préfixes génériques. Cependant, son utilisation peut être limitée jusqu'à ce que d'autres optimisations soient apportées dans les futures versions de PostgreSQL.
COLLATE "C" et text_pattern_ops
COLLATE "C" crée un index en utilisant le classement C, fournissant une correspondance de préfixe similaire à l'opérateur ^@. Vous pouvez également utiliser text_pattern_ops ou varchar_pattern_ops pour créer un index btree qui offre les meilleures performances pour les modèles ancrés à gauche (c'est-à-dire les modèles sans caractères génériques de début).
Autres notes
En utilisant des techniques d'indexation appropriées, vous pouvez améliorer considérablement les performances des requêtes LIKE dans PostgreSQL, réduire les différences de temps de réponse et garantir des performances cohérentes.
Ce qui précède est le contenu détaillé de. pour plus d'informations, suivez d'autres articles connexes sur le site Web de PHP en chinois!