2010-08-04 4 views
1

J'ai une table dans SQL Server avec les colonnes suivantes:Intégrer l'index de texte normal et complet dans SQL Server

id int (primary key) 
text nvarchar(max) (full text indexed) 
type int 

et j'ai des requêtes comme celle-ci:

where Contains([text], @text) 

ou

where Contains([text], @text) AND [type] = 3 

Cependant, la deuxième requête est lente. Je pense que je devrais intégrer l'index plein texte avec le champ [type].

Existe-t-il une autre solution?

Merci

Répondre

2

Je suppose que vous n'exécutez pas SQL 2008, car le moteur de texte intégral intégré dans cette version devrait prendre de meilleures décisions pour une requête comme la vôtre. Pour les versions antérieures, j'ai réussi en intégrant des clés supplémentaires dans le texte avec une forme de balise personnalisée. Vous aurez besoin de certains déclencheurs pour maintenir le texte à jour avec les clés.

par exemple, "Ceci est mon exemple de texte TypeKey_3."

Ensuite, votre clause where devient quelque chose comme:

where Contains([text], @text AND "TypeKey_" + @type) 
+0

idée simple et grande. Merci beaucoup. – ehsan

1

Étant donné que vous ne pouvez pas ajouter un champ entier à un index de texte intégral votre meilleur pari est d'ajouter un index régulier [type].

Questions connexes