J'utilise le serveur SQL et ont une table avec 2 colonnes
myId varchar(80)
cchunk varchar(max)
SQL Select est très lent avec CHARINDEX
Basiquement il stocke un grand morceau de texte pour c'est pourquoi je en ai besoin varchar(max)
. Mon problème est quand je fais une requête comme ceci:
select *
from tbchunks
where
(CHARINDEX('mystring1',tbchunks.cchunk)< CHARINDEX('mystring2',tbchunks.cchunk))
AND
CHARINDEX('mystring2',tbchunks.cchunk) - CHARINDEX('mystring1',tbchunks.cchunk) <=10
Il faut 3 secondes pour terminer, et les morceaux de table est d'environ seulement 500 000 enregistrements et données renvoyées de la requête ci-dessus est partout entre 0 à 800 max J'ai un index non clusterisé sur la colonne myid, cela m'a aidé à faire le décompte rapide (*) mais n'a pas aidé avec la requête ci-dessus.
J'ai essayé d'utiliser Fulltext mais j'étais lent. J'ai essayé de scinder le texte en cchunk en parties plus petites et en ajoutant une colonne id qui reliera tous ces morceaux séparés, mais a fini avec une table avec 2 millions d'enregistrements de morceaux séparés de texte (je l'ai fait pour que je puisse ajouter index) la requête était encore plus lente.
EDIT: modifié la table pour inclure une clé primaire (int) créé fultext catalogue avec "Accent senstive = true" créé l'index de texte intégral sur mon Tabe sur la colonne "cchunk" couru la même requête ci-dessus et a fini par prendre 22 secondes avec est beaucoup plus lent
MISE à JOUR Merci à tous pour suggérer la FullText (Bertrand @ Aaron merci!), je me suis converti ma requête à ce
SELECT * DE tbchunksAS FT_TBL INNER JOIN CONTAINSTABLE (tbchunks, cchunk, '(LaChaine1 PRES LaChaine2)') AS KEY_TBL SUR FT_TBL.cID = KEY_TBL. [KEY]
par la façon dont le cid est la clé primaire i ajouté plus tard. de toute façon je reçois des résultats Borad et je remarque que plus la colonne RANK qui a été retourné le mieux les résultats. Ma question est quand RANK commence à être précis?
Eh bien, avez-vous pensé [texte intégral Recherche] (http://msdn.microsoft.com/en- us/library/ms142571.aspx) et en le configurant correctement?Dire que vous l'avez "essayé et il était lent" ne donne pas l'assurance que vous avez correctement créé le catalogue, rempli correctement un ou plusieurs index, exécuté la bonne requête sur les données pour obtenir des résultats de recherche de proximité précis et efficaces, etc. de temps avez-vous passé avec la recherche de texte intégral exactement? –
pas si longtemps, je viens de mettre en place le catalogue et l'a testé et était lent, donc j'ai oublié à ce sujet. De toute façon vais-je être en mesure d'utiliser charindex? – user2280232
Je conduisais une Porsche la semaine dernière et c'était plus lent que la Nissan de ma femme. Oh j'ai oublié de mentionner qu'il y avait une bouteille de bière logée sous la pédale d'accélérateur! Il est difficile de vous dire pourquoi la recherche en texte intégral a été plus lente si nous n'avons aucune idée de la façon dont vous l'avez configurée et des requêtes que vous avez lancées. –