2010-03-12 6 views
7

Je dois ajouter une nouvelle instruction SELECT dont la condition de recherche inclut quelque chose comme leagueCode LIKE 'nba%'.Quel est l'impact provenant du caractère générique%

Je voudrais savoir si l'index par rapport à leagueCode est toujours exploitable ou si l'on introduit une surcharge après l'inclusion de% dans la colonne cible.

+0

Voulez-vous dire: 'leagueCode like 'nba%''? Sinon, vous ne faites pas de recherche générique, vous recherchez le caractère nba [caractère en pourcentage] des caractères littéraux ' – nocache

Répondre

4

dépend de 100% de la position du caractère générique.

  • Au début: pas d'index. Certains serveurs ont des index inverses (commençant à la fin de la chaîne) et les utiliseraient - ce n'est pas le cas de SQL Server.
  • Au milieu: Index partiel (partie initiale), puis recherche dans cette plage. À la fin: Index (En fait, un INDEX SEEK sera affiché dans l'analyseur de requête).

Surcharge? Bien sûr - mais ce n'est pas exactement élevé (pas de scan de table) et il n'y a pas vraiment de moyen de contourner le problème.

3

Oui, l'index peut toujours être utilisé car vous avez un préfixe constant (nba dans ce cas).

Questions connexes