Lequel est prévu dans une clause WHERE: 'wild cards' ou 'Ssortingng Functions'?

Je sais que les Wild Cards et les fonctions doivent être évitées dans les clauses WHERE si possible. Ma question est la suivante: lequel est encore meilleur en termes de performance, en supposant que nous devions choisir entre l'un d'entre eux? Plus spécifiquement, j'ai les deux requêtes suivantes et je veux savoir quel type de requête est préféré en général:

select FirstName from person.person where FirstName like 'S%' select FirstName from person.person where LEFT(FirstName,1) = 'S' 

PS. J'ai vérifié le time d'exécution des deux requêtes et il n'y avait pas de différence notable dans ce cas particulier. Voici les plans d'exécution:

entrez la description de l'image ici

entrez la description de l'image ici

entrez la description de l'image ici

C'est le code de l'index IX_Person_LastName_FirstName_MiddleName est défini:

 USE [AdventureWorks2012] GO /****** Object: Index [IX_Person_LastName_FirstName_MiddleName] Script Date: 11/30/2016 12:53:05 PM ******/ CREATE NONCLUSTERED INDEX [IX_Person_LastName_FirstName_MiddleName] ON [Person].[Person] ( [LastName] ASC, [FirstName] ASC, [MiddleName] ASC )WITH (PAD_INDEX = OFF, STATISTICS_NORECOMPUTE = OFF, SORT_IN_TEMPDB = OFF, DROP_EXISTING = OFF, ONLINE = OFF, ALLOW_ROW_LOCKS = ON, ALLOW_PAGE_LOCKS = ON) ON [PRIMARY] GO; 

Voici quelques liens que j'ai trouvés sur ce sujet, bien qu'ils ne répondent pas complètement à ma question:

AvoidFunctionsInWereClause_1

AvoidFunctionsInWereClause_2

AvoidLikeClause

Les deux requêtes effectuent une parsing d'index, donc elles sont OK. Mais nous ne soaps pas comment vous configurez votre taille d'index ou de table.

La première version peut utiliser un index de base sur firstName car le % est à la fin.

  FirstName like 'S%' FirstName Like '%S%' -- cant use index 

La deuxième version ne peut pas utiliser l'index sur firstName, mais vous pouvez créer un index calculé pour LEFT(FirstName,1) c'est pourquoi vous devriez nous montrer votre index.

C'est l'article ont les meilleurs conseils pour créer un index. MySQL index CONSEILS