|
Publicité ' | |||||||||||||||||||||||
|
|
#1 |
|
Membre du Club
![]() Inscription : mai 2005 Messages : 91 ![]() |
Bonjour,
Je dois comparer 2 requêtes qui donne un résultat strictement équivalent au niveau données mais qui ont un temps d'exécution différent. J'utilise SQL Scratchpad pour lancer les requêtes, il me fournit le temps d'exécution et je peux également obtenir le plan d'éxécution. Mon problème est au niveau du temps d'exécution car celui n'ai quasiment jamais le même et comme je dois comparer les requêtes principalement à ce niveau là, c'est très difficile de savoir quelle requête est la plus performante. Si je lance la requête pour la 1ère fois sous SQL Scratchpad (après ouverture d'Oracle Enterprise Manager), il n'y a pas eu de mise en mémoire tampon (je suppose) et c'est pourquoi elle est toujours plus longue. Si je la relance tout de suite après elle est beaucoup plus rapide. Etant donné que je lance plusieurs fois les requêtes, que je fais des modifications, puis que je les relance... Comment faire pour vider cette mémoire tampon et avoir le temps réel que va mettre la requête ? car cette requête est utilisée pour une interface web et les utilisateurs veulent un résultat rapide à la première exécution. Je fais régulièrement un Code :
analyze TABLE contrat estimate statistics;
Je vous remercie de votre aide. Tux |
|
|
00
|
|
|
#2 | ||
|
Membre actif
![]() Inscription : août 2007 Messages : 176 ![]() |
Je ne pense pas que le temps d'exécution soit un bon critère, car il peut varier pour des raisons diverses.
Le mieux me semble de faire une trace et de l'analyser avec TKPROF, ou bien de te servir de la vue V$SQLAREA, suivant ta version d'Oracle Tu pourras ainsi retrouver les consommations en terme de CPU, de mémoire et d'I/O et départager ainsi plus facilement tes requêtes Si tu as accès à la vue v$SQLAREA, le plus simple est de rajouter un commentaire à ton select pour pouvoir l'identifier après: Code :
|
||
|
|
00
|
|
|
#3 | |||||
|
Membre du Club
![]() Inscription : mai 2005 Messages : 91 ![]() |
Merci pour ta réponse.
J'ai fait ce que tu m'as dit ; j'ai accès à la vue en question, j'ai les infos. Voici les résultats pour ID1 : Citation:
Citation:
Comment doit on interpréter ces résultats (où je peux trouver les unités) ? C'est bizarre car en tps d'exécution, ID1 avait l'air d'être plus rapide mais je ne peux tester pour l'instant que sur des petites volumétries... Par contre, je voudrais faire un select des champs car j'ai du mal à m'y retrouver dans les champs de la vue... J'ai essayé de faire ça, mais j'ai une erreur: Code :
Citation:
Je te remercie pour ton aide. Tux PS : je suis en 10g |
|||||
|
|
00
|
|
|
#4 |
![]() ![]() Inscription : janvier 2004 Messages : 15 861 ![]() |
il manque une appostrophe de fin de chaine à la fin de la requête
|
|
|
00
|
|
|
#5 |
|
Membre actif
![]() Inscription : août 2007 Messages : 176 ![]() |
Tout semble indiquer que, effectivement, l'ID2 est meilleure que l'ID1
Mais, il faut que tu récupères les champs suivants pour être sûr :
|
|
|
00
|
|
|
#6 |
|
Membre du Club
![]() Inscription : mai 2005 Messages : 91 ![]() |
|
|
|
00
|
Copyright © 2000-2012 - www.developpez.com