Remarque
L’accès à cette page nécessite une autorisation. Vous pouvez essayer de vous connecter ou de modifier des répertoires.
L’accès à cette page nécessite une autorisation. Vous pouvez essayer de modifier des répertoires.
Voici une liste de recommandations qui aideront à améliorer les performances des requêtes en texte intégral.
Les performances des requêtes en texte intégral sont également influencées par les ressources matérielles, telles que la mémoire, la vitesse du disque, la vitesse du processeur et l’architecture des machines.
Défragmentez l’index de la table de base à l’aide de ALTER INDEX REORGANIZE.
Réorganiser le catalogue de texte intégral à l’aide de ALTER FULLTEXT CATALOG REORGANIZE. Assurez-vous que vous effectuez cette opération avant les tests de performances, car l’exécution de cette instruction entraîne une fusion principale des index de recherche en texte intégral dans ce catalogue.
Limitez votre choix de colonnes clés de texte intégral à une petite colonne. Bien qu’une colonne de 900 octets soit prise en charge, nous vous recommandons d’utiliser une colonne clé plus petite dans un index de recherche en texte intégral.
intetbigintfournissent les meilleures performances.L’utilisation d’une clé de texte intégral entière évite une jointure avec la table de mappage docid . Par conséquent, une clé de texte intégral entière améliore les performances des requêtes par ordre de grandeur et améliore les performances d’analyse. Des avantages supplémentaires en matière de performances peuvent se produire si la clé de texte intégral est également la clé d’index en cluster.
Combinez plusieurs prédicats CONTAINS en un prédicat CONTAINS . Dans SQL Server, vous pouvez spécifier une liste de colonnes dans la requête CONTAINS.
Si vous avez uniquement besoin d’informations de clé de texte intégral ou de classement, utilisez CONTAINSTABLE ou FREETEXTTABLE au lieu de CONTAINS ou FREETEXT, respectivement.
Pour limiter les résultats et augmenter les performances, utilisez le paramètre top_n_by_rank des fonctions FREETEXTTABLE et CONTAINSTABLE. top_n_by_rank vous permet de rappeler uniquement les hits les plus pertinents. Utilisez ce paramètre uniquement si votre scénario métier ne nécessite pas de rappeler tous les résultats possibles (autrement dit, il ne nécessite pas le rappel total).
Remarque
Le rappel total est généralement nécessaire pour les scénarios juridiques, mais peut être moins important que les performances pour les scénarios métier tels qu’une entreprise électronique.
Vérifiez le plan de requête en texte intégral pour vous assurer que le plan de jointure approprié est choisi. Utilisez un indice de jointure ou un indice de requête si vous devez le faire. Si un paramètre est utilisé dans la requête de texte intégral, la première valeur du paramètre détermine le plan de requête. Vous pouvez utiliser l’indicateur de requête OPTIMIZE FOR pour forcer la compilation de la requête avec la valeur souhaitée. Cela permet d’obtenir un plan de requête déterministe et de meilleures performances.
Trop de fragments d’index de recherche en texte intégral dans l’index de recherche en texte intégral peuvent entraîner une dégradation substantielle des performances des requêtes. Pour réduire le nombre de fragments, réorganisez le catalogue de texte intégral à l’aide de l’option REORGANIZE de l’instruction ALTER FULLTEXT CATALOGTransact-SQL. Cette instruction fusionne essentiellement tous les fragments en un seul fragment plus grand et supprime toutes les entrées obsolètes de l’index de recherche en texte intégral.
Dans la recherche en texte intégral, les opérateurs logiques spécifiés dans CONTAINSTABLE (AND, OR) peuvent être implémentés soit en tant que jointures SQL, soit à l'intérieur des fonctions de table-valuée en flux pour l'exécution du texte intégral (STVF). En règle générale, les requêtes avec un seul type d’opérateurs logiques sont implémentées uniquement par l’exécution de texte intégral, tandis que les requêtes qui combinent des opérateurs logiques possèdent également des jointures SQL. L’implémentation d’un opérateur logique à l’intérieur de l’exécution de texte intégral STVF utilise certaines propriétés d’index spéciales qui le rendent beaucoup plus rapide que les jointures SQL. Pour cette raison, nous vous recommandons de tramer des requêtes à l’aide d’un seul type d’opérateur logique.
Pour les applications qui contiennent des prédications de relation sélective, les requêtes qui utilisent des prédicats relationnels sélectifs et des prédicats de texte intégral désélectionnels peuvent s’avérer optimales lorsqu’ils sont écrits pour utiliser l’optimiseur de requête. Cela permet à l’optimiseur de requête de décider s’il peut exploiter le prédicat ou le pushdown de plage pour produire un plan de requête efficace. Cette approche est plus simple et souvent plus efficace que l’indexation des données relationnelles en tant que données de texte intégral.
Ressources associées
SQL Server 2008 Full-Text : Fonctionnement interne et améliorations de recherche
Voir aussi
sys.dm_fts_memory_buffers (Transact-SQL)
sys.dm_fts_memory_pools (Transact-SQL)