Bonjour.
Je m'interroge devant certaines performance d'un de mes queries.
J'ai une table qui n'a pour seul index sa clé primaire composée d'un entier (IdClub) et d'un nvarchar(250) (FilePath).
J'aimerais retrouvé dans ma table toutes les lignes où IdClub correspond à un certain paramètre entier et où FilePath est le début (ou la totalité) d'un certain paramètre chaîne de caractères.
Cela donne quelque chose comme ceci :
Le problème avec cette écriture est que l'index n'est pas utilisé (sinon pour le paramètre entier).
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6 SELECT * FROM dbo.tManagement_SkipFiles AS SK WHERE SK.IdClub IN (0, 1040) AND N'app[_]themesdsqfdqazzzzzzzzzzzzsfdsqf' LIKE SK.FilePath + '%'
J'aimerais évidement tirer un meilleur parti de l'index, mais je ne trouve pas d'écriture permettant de le faire.
Par exemple, ceci est un non-sens:
Avez-vous une idée ?
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7 SELECT TOP(1) @Dummy = SK.NoSkip FROM dbo.tManagement_SkipFiles AS SK WHERE SK.IdClub IN (0, 1040) AND SK.FilePath LIKE SUBSTRING(N'app[_]themesdsqfdqazzzzzzzzzzzzsfdsqf', 0, LEN(SK.FilePath)) + N'%' ORDER BY SK.IdClub DESC
Partager