Précédent   Forum des professionnels en informatique > Bases de données > Sybase > Adaptive Server Enterprise
Adaptive Server Enterprise Forum d'entraide concernant Sybase Adaptive Server Enterprise, le dataserver phare de Sybase
Partagez cette discussion sur d'autres réseaux sociaux : Viadeo Twitter Google Facebook Digg Delicious MySpace Yahoo
Réponse Proposer ce sujet en actualité
 
Outils de la discussion
Publicité
'
Vieux 21/01/2008, 11h32   #1
Membre habitué
 
Inscription : août 2005
Messages : 130
Détails du profil
Informations personnelles :
Âge : 29
Localisation : France, Paris (Île de France)

Informations forums :
Inscription : août 2005
Messages : 130
Points : 126
Points : 126
Par défaut [ASE 12][store proc] Pb lenteur

Bonjour,

j'ai réalisé une store proc composée d'une déclaration, initialisation de variables puis de plusieurs opérations select/update/delete sur des tables (environ 500 000 lignes) avec création de plusieurs tables temporaires.
Si j'execute en pas à pas mes instructions j'execute le tout en à peu près 3min.
Si j'execute tout d'un coup, on passe à plus de 30min...

Pourquoi????

En séparant mes instructions par des "go" je retrouve les 3min mais j'ai alors le problème de devoir redéclarer les variables à chaque fois, pas terrible..

Quelqu'un aurait il une piste pour m'éclairer? merci bcp d'avance
Zeusviper est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 21/01/2008, 13h42   #2
Rédacteur/Modérateur
 
Inscription : janvier 2006
Messages : 1 301
Détails du profil
Informations personnelles :
Âge : 52

Informations forums :
Inscription : janvier 2006
Messages : 1 301
Points : 1 505
Points : 1 505
Envoyer un message via AIM à mpeppler
Le problème vient probablement du plan d'exécution des requêtes, qui dans la version proc stock n'est probablement pas optimal, à priori en raison de l'utilisation de tables temporaires dans la proc. Si ces tables n'ont pas d'indexes alors l'optimiseur va utiliser ses propres à priori pour déterminer le coût d'accès à ces tables.

Il faudrait voir le SHOWPLAN et les STATISTICS IO et TIME pour avoir une meilleur idée, mais tu peux peut-être essayer de créer un index sur la/les table(s) temporaire(s) pour voir si cela fait une différence.

Michael
__________________
Michael Peppler
Membre de TeamSybase - www.teamsybase.com

"A successful [software] tool is one that was used to do something undreamed of by its author." -- S. C. Johnson
mpeppler est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 21/01/2008, 14h20   #3
Membre habitué
 
Inscription : août 2005
Messages : 130
Détails du profil
Informations personnelles :
Âge : 29
Localisation : France, Paris (Île de France)

Informations forums :
Inscription : août 2005
Messages : 130
Points : 126
Points : 126
MERCI beaucoup!!!!

En rajoutant des index sur chaque table temp intervenant dans une jointure, je n'ai en effet plus de blocage!!

Je ne voyais pas l'utilité des index au prime abord puisque en executant une instruction à la fois, il ne me posait pas de problème. Mais en fait si je comprends bien, en mode pas à pas, l'optimiseur analyse les données puis "compile" la nouvelle requete alors qu'en mode store proc, il compile tt de suite tt. Je comprend maintenant un peu mieux la logique de l'optimiseur!
Bref merci!
Zeusviper est déconnecté   Envoyer un message privé Réponse avec citation 00
Réponse Proposer ce sujet en actualité Cette discussion est résolue.
Outils de la discussion



Fuseau horaire GMT +2. Il est actuellement 05h48.


 
 
 
 
Partenaires

Hébergement Web