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

Qu'est-ce qu'un index de texte intégral et quand dois-je l'utiliser ?

Dans les bases de données, les index sont généralement utilisés pour améliorer les performances lors de la recherche de quelque chose de défini dans votre clause where. Cependant, lorsqu'il s'agit de filtrer du texte, par ex. en utilisant quelque chose comme WHERE TextColumn LIKE '%searchstring%' alors les recherches sont lentes, car le fonctionnement des index de base de données réguliers est optimisé pour les correspondances avec le "contenu entier" d'une colonne et pas seulement une partie de celle-ci. En particulier, la recherche LIKE qui inclut des caractères génériques ne peut utiliser aucun type d'index.

Comme mentionné dans le commentaire ci-dessous, MySQL a besoin du MATCH () ... AGAINST syntaxe pour rechercher dans un index de texte intégral ; BTW cela varie selon le fournisseur de base de données. Dans MS SQL, vous pouvez utiliser CONTAINS gardez cela à l'esprit lorsque vous envisagez de prendre également en charge d'autres bases de données.

Les index de texte intégral fonctionnent mieux pour le texte normal, car ils sont optimisés pour ce type de colonnes. Très simplifié :Ils découpent le texte en mots et font un index sur les mots et non sur l'ensemble du texte. Cela fonctionne beaucoup plus rapidement pour les recherches de texte lors de la recherche de mots spécifiques.