J'ai un problème sur une requête et je ne comprend pas
Si j'execute la requête suivante
" Select MIN(DATMAR) FROM ENTVTE WHERE CODMAR = 211152 "
J'obtiens un résultat au bout d'une dizaine de secondes environ
Par contre si je fais : (après déclarations)
SET @CODMAR = 211152
Select MIN(DATMAR) FROM ENTVTE WHERE CODMAR = @CODMAR
Je n'ai pas de résultat après plus de dix minutes ....
Cette action est irreversible, confirmez la suppression du commentaire ?
Signaler le commentaire
Veuillez sélectionner un problème
Nudité
Violence
Harcèlement
Fraude
Vente illégale
Discours haineux
Terrorisme
Autre
Med Bouchenafa[MVP]
Le problème vient de la conception du plan de requête par SQL/Server Dans le premier cas, il a toutes les billes pour concevoir un plan de requête optimal Dans le second cas, il ne connait pas la valeur de @CODMAR au moment de la conception du plan Pour vérifier tout cela, utilise l'analyseur de requêtes pour voir le plan de requête utilisé Une autre de façon de vérifier serait de créer une procédure stockée CREATE PROC ps_Test @CODMAR int AS SELECT MIN(DATMAR) FROM ENTVTE WHERE CODMAR = @CODMAR
EXEC ps_Test @CODMAR 211152
Tu verras qu'appelant par la suite cette procédure avec la valeur 211152, elle s'execute aussi vite que ta première requête
-- Salutations Med Bouchenafa TETRASET 75015 Paris "Benoit Damay" wrote in message news:3f1e5f32$0$16665$
Bonjour à tous,
J'ai un problème sur une requête et je ne comprend pas
Si j'execute la requête suivante " Select MIN(DATMAR) FROM ENTVTE WHERE CODMAR = 211152 " J'obtiens un résultat au bout d'une dizaine de secondes environ
Par contre si je fais : (après déclarations)
SET @CODMAR = 211152 Select MIN(DATMAR) FROM ENTVTE WHERE CODMAR = @CODMAR
Je n'ai pas de résultat après plus de dix minutes ....
Là je cale alors si quelqu'un peut m'aider...
Le problème vient de la conception du plan de requête par SQL/Server
Dans le premier cas, il a toutes les billes pour concevoir un plan de
requête optimal
Dans le second cas, il ne connait pas la valeur de @CODMAR au moment de la
conception du plan
Pour vérifier tout cela, utilise l'analyseur de requêtes pour voir le plan
de requête utilisé
Une autre de façon de vérifier serait de créer une procédure stockée
CREATE PROC ps_Test @CODMAR int
AS
SELECT MIN(DATMAR) FROM ENTVTE
WHERE CODMAR = @CODMAR
EXEC ps_Test @CODMAR 211152
Tu verras qu'appelant par la suite cette procédure avec la valeur 211152,
elle s'execute aussi vite que ta première requête
--
Salutations
Med Bouchenafa
TETRASET
75015 Paris
"Benoit Damay" <bdamay@free.fr> wrote in message
news:3f1e5f32$0$16665$626a54ce@news.free.fr...
Bonjour à tous,
J'ai un problème sur une requête et je ne comprend pas
Si j'execute la requête suivante
" Select MIN(DATMAR) FROM ENTVTE WHERE CODMAR = 211152 "
J'obtiens un résultat au bout d'une dizaine de secondes environ
Par contre si je fais : (après déclarations)
SET @CODMAR = 211152
Select MIN(DATMAR) FROM ENTVTE WHERE CODMAR = @CODMAR
Je n'ai pas de résultat après plus de dix minutes ....
Le problème vient de la conception du plan de requête par SQL/Server Dans le premier cas, il a toutes les billes pour concevoir un plan de requête optimal Dans le second cas, il ne connait pas la valeur de @CODMAR au moment de la conception du plan Pour vérifier tout cela, utilise l'analyseur de requêtes pour voir le plan de requête utilisé Une autre de façon de vérifier serait de créer une procédure stockée CREATE PROC ps_Test @CODMAR int AS SELECT MIN(DATMAR) FROM ENTVTE WHERE CODMAR = @CODMAR
EXEC ps_Test @CODMAR 211152
Tu verras qu'appelant par la suite cette procédure avec la valeur 211152, elle s'execute aussi vite que ta première requête
-- Salutations Med Bouchenafa TETRASET 75015 Paris "Benoit Damay" wrote in message news:3f1e5f32$0$16665$
Bonjour à tous,
J'ai un problème sur une requête et je ne comprend pas
Si j'execute la requête suivante " Select MIN(DATMAR) FROM ENTVTE WHERE CODMAR = 211152 " J'obtiens un résultat au bout d'une dizaine de secondes environ
Par contre si je fais : (après déclarations)
SET @CODMAR = 211152 Select MIN(DATMAR) FROM ENTVTE WHERE CODMAR = @CODMAR
Je n'ai pas de résultat après plus de dix minutes ....