OVH Cloud OVH Cloud

Probleme de rapidite sur un select

3 réponses
Avatar
Michel Drot
Bonjour a tous,

J'essaie de minimiser le temps d'execution d'une procedure stockee qui met a
jour des tables apres verification des donnees et ai constate que le temps
d'execution etait tres rallonge a cause d'un select....

Soit
une table contenant environ 100000 lignes avec une cle primaire sur
A+B+C
une procedure stockee qui contient un ordre select.

Un script execute la procedure stockee, et je teste la rapidite d'execution
du select dans plusieurs cas.

Si le select contient toute la cle primaire
select @champs1=champs1 from table where A=@A , B=@B,C=@C , j'obtiens un
temps d'execution de 300millisecondes

Si le select ne contient pas toute la cle primaire
select @champs1=champs1 from table where A=@A , B=@B, (sans mettre tous
les champs de l'indexe) j'obtiens 130 millisecondes

Je ne comprends pas pourquoi le temps d'execution est reduit de moitie
lorsque je n'instruis pas tous les champs de la cle primaire.
Il me semble que cela devrait etre l'inverse


De plus si j'execute le select directement dans le script (sans l'appeler
dans une procedure stockee) j'obtiens un temps d'execution de 20ms

Je ne comprends pas un tel ecart de performance.

Quequ'un a t il une explication ou n debut d'explication?

En vous remerciant d'avance pour votre aide.
Meilleures salutations

3 réponses

Avatar
SQLpro [MVP]
Michel Drot a écrit :
Bonjour a tous,

J'essaie de minimiser le temps d'execution d'une procedure stockee qui met a
jour des tables apres verification des donnees et ai constate que le temps
d'execution etait tres rallonge a cause d'un select....

Soit
une table contenant environ 100000 lignes avec une cle primaire sur
A+B+C
une procedure stockee qui contient un ordre select.

Un script execute la procedure stockee, et je teste la rapidite d'execution
du select dans plusieurs cas.

Si le select contient toute la cle primaire
select @champs1=champs1 from table where A=@A , B=@B,C=@C , j'obtiens un
temps d'execution de 300millisecondes



Il y a plus de travail à faire pour lire 3 données que 2 !


Si le select ne contient pas toute la cle primaire
select @champs1=champs1 from table where A=@A , B=@B, (sans mettre tous
les champs de l'indexe) j'obtiens 130 millisecondes



Donc parfaitement logique


Je ne comprends pas pourquoi le temps d'execution est reduit de moitie
lorsque je n'instruis pas tous les champs de la cle primaire.
Il me semble que cela devrait etre l'inverse







De plus si j'execute le select directement dans le script (sans l'appeler
dans une procedure stockee) j'obtiens un temps d'execution de 20ms



Postez votre Proc Stoc


Je ne comprends pas un tel ecart de performance.

Quequ'un a t il une explication ou n debut d'explication?

En vous remerciant d'avance pour votre aide.
Meilleures salutations





A +

--
Frédéric BROUARD, MVP SQL Server, expert bases de données et langage SQL
Le site sur le langage SQL et les SGBDR : http://sqlpro.developpez.com
Audit, conseil, expertise, formation, modélisation, tuning, optimisation
********************* http://www.datasapiens.com ***********************
Avatar
Michel Drot
> > Bonjour a tous,
>
> J'essaie de minimiser le temps d'execution d'une procedure stockee qui


met a
> jour des tables apres verification des donnees et ai constate que le


temps
> d'execution etait tres rallonge a cause d'un select....
>
> Soit
> une table contenant environ 100000 lignes avec une cle primaire sur
> A+B+C
> une procedure stockee qui contient un ordre select.
>
> Un script execute la procedure stockee, et je teste la rapidite


d'execution
> du select dans plusieurs cas.
>
> Si le select contient toute la cle primaire
> select @champs1=champs1 from table where A=@A , B=@B,C=@C ,


j'obtiens un
> temps d'execution de 300millisecondes

Il y a plus de travail à faire pour lire 3 données que 2 !

>
> Si le select ne contient pas toute la cle primaire
> select @champs1=champs1 from table where A=@A , B=@B, (sans mettre


tous
> les champs de l'indexe) j'obtiens 130 millisecondes

Donc parfaitement logique




L'essai que j'ai fait ne confirme pas cela
Voici les resultats que j'obtiens
1) Temps avec codecinema noseance et tarif 300 (avec 3 donnees de
la cle primaire)
2) Temps avec noseance et tarif 140 (avec 2 donnees)
3) Temps avec codecinema noseance et tarif 2eme recherche 333 (avec
3 donnees de la cle primaire)
4) Temps avec noseance tarif et prix 140 (avec 3 donnees dont une ne
faisant pas partie de la cle primaire)

Postez votre Proc Stoc



Ci joint.

Merci pour votre reponse
Avatar
SQLpro [MVP]
Michel Drot a écrit :
Bonjour a tous,

J'essaie de minimiser le temps d'execution d'une procedure stockee qui




met a
jour des tables apres verification des donnees et ai constate que le




temps
d'execution etait tres rallonge a cause d'un select....

Soit
une table contenant environ 100000 lignes avec une cle primaire sur
A+B+C
une procedure stockee qui contient un ordre select.

Un script execute la procedure stockee, et je teste la rapidite




d'execution
du select dans plusieurs cas.

Si le select contient toute la cle primaire
select @champs1=champs1 from table where A=@A , B=@B,C=@C ,




j'obtiens un
temps d'execution de 300millisecondes


Il y a plus de travail à faire pour lire 3 données que 2 !

Si le select ne contient pas toute la cle primaire
select @champs1=champs1 from table where A=@A , B=@B, (sans mettre




tous
les champs de l'indexe) j'obtiens 130 millisecondes


Donc parfaitement logique




L'essai que j'ai fait ne confirme pas cela
Voici les resultats que j'obtiens
1) Temps avec codecinema noseance et tarif 300 (avec 3 donnees de
la cle primaire)
2) Temps avec noseance et tarif 140 (avec 2 donnees)
3) Temps avec codecinema noseance et tarif 2eme recherche 333 (avec
3 donnees de la cle primaire)
4) Temps avec noseance tarif et prix 140 (avec 3 donnees dont une ne
faisant pas partie de la cle primaire)

Postez votre Proc Stoc



Ci joint.



????? rien !!!



Merci pour votre reponse






--
Frédéric BROUARD, MVP SQL Server, expert bases de données et langage SQL
Le site sur le langage SQL et les SGBDR : http://sqlpro.developpez.com
Audit, conseil, expertise, formation, modélisation, tuning, optimisation
********************* http://www.datasapiens.com ***********************