Si vous interrogez des enregistrements et que vous filtrez des données dans un type de données XML, vous demandez à SQL Server d'examiner tout le contenu XML pour trouver des résultats.
Pour accélérer les choses, combinez des filtres de type de données XML avec des expressions de recherche en texte intégral. La recherche en texte intégral réduit les résultats (selon votre degré de précision) avant que le XML ne soit analysé et recherché. Il peut économiser beaucoup de CPU et d'E/S. Voici un exemple:
SELECT *
FROM Table
WHERE CONTAINS(XmlColumn,'value')
AND XmlColumn.exist('/element/element/text()[contains(.,"value")]') = 1
Ceci est documenté par Microsoft here, et vous pouvez examiner votre avant et après l'exécution de vos requêtes par des statistiques sur.Voici comment vous activez les statistiques:
SET STATISTICS IO ON;
SET STATISTICS TIME ON;
Avez-vous les index requis sur la table? Je soupçonne que la taille des lignes de données est juste trop grande, et prend juste beaucoup de temps pour retourner les données ... –
Comment faites-vous le 'SELECT *'? –