Exemple de requête:Pourquoi la version paramétrée de cette requête est-elle plus lente qu'une version non paramétrée?
CREATE PROCEDURE dbo.Test (@p varchar(10))
AS
DECLARE @param varchar(10)
SET @param = @p + '%'
SELECT * FROM table1 t1
INNER JOIN table2 t2 on t1.id = tr.id
WHERE t2.desc LIKE @param
J'ai une requête qui est similaire à celle ci-dessus et quand j'utilise cette procédure stockée il fonctionne indéfiniment sans donner aucune sortie. Mais si j'utilise la même requête que,
SELECT * FROM table1 t1
INNER JOIN table2 t2 on t1.id = tr.id
WHERE t2.desc LIKE 'A%' -- notice no parameter here
Ceci s'exécute en moins d'une seconde.
Mon table2 a 140K records et table1 certains 250K
Toute idée de ce qui pourrait être à l'origine comme opérateur de courir lentement?
Avez-vous regardé un plan d'explication pour la requête? –
D'après vos tests, il semble que cela n'ait rien à voir avec un mot-clé similaire, puisque même la version rapide inclut cet opérateur. – JohnFx
J'ai essayé de courir les deux et il court moins d'une seconde quand j'utilise les paramètres directement. –