La façon la plus rapide pour trouver chaîne par chaîne en SQL?

J'ai l'immense table avec 2 colonnes: Id et le Titre. L'Id est de type bigint et je suis libre de choisir le type de Titre de colonne: colonne de type varchar, char, texte, que ce soit. Titre de la colonne contient du texte aléatoire des chaînes de caractères comme "abcdefg", "q", "allyourbasebelongtous" avec un maximum de 255 caractères.

Ma tâche est d'obtenir des chaînes par sous-chaîne donnée. Les chaînes ont également aléatoire de longueur et peut être début, au milieu ou à la fin des chaînes. Le moyen le plus évident pour l'exécuter:

SELECT * FROM t LIKE '%abc%'

Je ne se soucient pas de l'INSÉRER, il me suffit de faire vite sélectionne. Que puis-je faire pour effectuer une recherche rapide?

- Je utiliser MS SQL Server 2008 R2, la recherche plein texte sera inutile, autant que je le vois.

  • Bienvenue dans le monde merveilleux de très mauvaises performances de la base 🙂
  • Pourquoi de recherche de texte intégral être inutile?
  • pourrait sous-chaînes de pions? Si vous pouvez séparer les mots par un espace, une virgule ou un tiret, j'ai une idée. Laissez-moi savoir.
  • Combien de lignes de la table?
  • Chaînes de caractères dans le Titre ne sont pas des phrases et ils n'ont pas de limites de mot. Je me demande si le texte complet de la recherche toujours de l'aide ici.
  • Comment le mal est l'interrogation d'une indexé correctement table avec une seule clause LIKE sur une de 255 caractères de la colonne de l'exécution?
  • O - Avec un LIKE '%<anything>%' requête, il n'y a pas une telle chose comme "indexé correctement'. Aucun indice ne sera jamais utilisable, tout simplement parce que le premier %.
  • Juste pensé que je voudrais éviter un problème de performance due à une autre requête.

InformationsquelleAutor msergey | 2011-07-11