|
Publicité ' | |||||||||||||||||||||||
|
|
#1 | ||
|
Invité régulier
![]() Inscription : mars 2011 Messages : 48 ![]() |
Bonjour ,
j'ai une requête qui dure longtemps sans me retourner de résultat jusqu'à que j'arrête l'exécution de ma requête Code :
Merci pour toute information |
||
|
|
00
|
|
|
#2 | ||||
|
Membre chevronné
![]() O. JolySupport Inscription : décembre 2010 Messages : 287 ![]() |
C'est quoi longtemps ?
C'est quoi la taille (en nombre de blocs) des tables ? Pourquoi un group by sur sectionid_fk ? Pour ma part je créerais une table temporaire (ou une vue matérialisée) Code :
Code :
|
||||
|
00
|
|
|
#3 | ||
|
Invité régulier
![]() Inscription : mars 2011 Messages : 48 ![]() |
mercii
j'ai dit longtemps parce que ma requete dure plus que 5 minutes sans me retourner de résultat !!! la taille en nombre de lignes de la table sectionname est 985 lignes et même si je fais : Code :
à quoi sert la table temporaire dans ce cas ?? Merci encore une fois |
||
|
|
00
|
|
|
#4 | ||
![]() ![]() Inscription : janvier 2004 Messages : 15 861 ![]() |
Y a-t-il un index sur la colonne sectionid_fk ?
Que donne : Code :
Sinon, ce serait pas mal d'avoir les plans d'exécution aussi :neutre: PS : supprime le DISTINCT qui n'a aucun intérêt si ce n'est de faire un tri inutile |
||
|
|
00
|
|
|
#5 |
|
Membre expérimenté
![]() François Inscription : février 2010 Messages : 305 ![]() |
Pour ameliorer le temps d'execution, un truc qui est pratique, c'est de savoir precisement ou Oracle passe son temps.
Un tkprof ou un explain plan serait une bonne base pour voir ce qui va de travers. |
|
|
00
|
|
|
#6 | ||||
![]() ![]() Inscription : janvier 2004 Messages : 15 861 ![]() |
Dans les 2 bases ? Combien de temps dure :
Code :
Code :
|
||||
|
|
10
|
|
|
#7 | |||
|
Membre chevronné
![]() O. JolySupport Inscription : décembre 2010 Messages : 287 ![]() |
Citation:
|
|||
|
00
|
|
|
#8 | |
![]() ![]() Inscription : janvier 2004 Messages : 15 861 ![]() |
Citation:
Remplacer NOT IN par NOT EXIST devrait par contre permettre de réduire le nombre de lignes sélectionnées dans la base distante |
|
|
|
10
|
|
|
#9 | ||||||||
|
Membre chevronné
![]() O. JolySupport Inscription : décembre 2010 Messages : 287 ![]() |
En fait remplacer le not in par un not exists est une amélioration, mais essentiellement parceque le plan d'exécution passe en HASH ANTI JOIN, par contre on garde le full scan.
Code :
Code :
Code :
Code :
|
||||||||
|
00
|
|
|
#10 | ||
|
Invité régulier
![]() Inscription : mars 2011 Messages : 48 ![]() |
Bonjour les amis ,
je vous remercie infiniment pour votre soutien ainsi que votre intérêt 1- le count dans la base source dure 0.01 secondes ce qui est super mais pour le count traité au niveau de la base distante Code :
SELECT count(sectionid_fk) FROM sectionname@bdprod 2- pour le : Code :
3- oui il existe un index sur le foreign key sectionid_fk maintenant est ce que je travaille avec la requête qui dure apparement 32.43 secondes ou quoi au juste ?? je vous remercie encore une fois pour votre intérêt |
||
|
|
00
|
|
|
#11 |
|
Membre chevronné
![]() O. JolySupport Inscription : décembre 2010 Messages : 287 ![]() |
Faut tester
Pour moi construire une vue matérialisée ou une table temporaire va durer 11 secondes et l'exécution de la requête (avec not exists sur la table temporaire) durera environ 2 centièmes, mais c'est à vérifier. |
|
00
|
|
|
#12 |
|
Nouveau Membre du Club
![]() Inscription : septembre 2008 Messages : 77 ![]() |
Bonjour,
je trouve que ce lien donne de bons conseils pour l'optimisation sous oracle http://jpg.developpez.com/oracle/tuning/ J'espère que ça va aider. |
|
|
00
|
|
|
#13 | ||
|
Expert Confirmé Sénior
![]() Inscription : juillet 2003 Messages : 3 437 ![]() |
Une astuce que j'ai trouvé pour faire des requêtes entre bases (lourdes mises à jour), utiliser des minus plutôt que des not exists.
Code :
__________________
More Code : More Bugs. Less Code : Less Bugs |
||
|
|
11
|
|
|
#14 |
|
Membre Expert
![]() Pacman PacmanBusiness analyst Inscription : juin 2004 Messages : 1 417 ![]() |
Salut !
J'ai quelques remarques / question : - Attention, en enlevant le GROUP BY, on n'a pas le même résultat ! (Sauf si on ajoute DISTINCT dans le count ?) => Si c'est bien une FK, on peut avoit de multiples occurences pour une même valeur de FK... - Euh un DB Link vers la PROD, c'est chaud un peu non ? (Question d'organisation de l'entreprise ensuite Ojo, d'accord pour ta remarque sur les blocs vs lignes... mais sur la requête qui chope juste les FK, dans la mesure où la colonne est indexée, on ne devrait pas mettre 11 secondes pour 1000 lignes ! D'où la question pour SALMHSN : Je suppose qu'avec ta requête, tu essaies de voir les différences entre tes environnement de test ou dev et la prod... tu as besoin de faire ça souvent ? On ne te met pas à dispo des copies de PROD ?
__________________
(c'est ma photo) Paku, Paku ! Pour les jeunes incultes : non, je ne suis pas un pokémon... Le pacblog : http://pacmann.over-blog.com/ |
|
10
|
Copyright © 2000-2012 - www.developpez.com