Précédent   Forum des professionnels en informatique > Bases de données > Oracle
Oracle Forum Oracle : le serveur, les outils, ... Voir F.A.Q Oracle Tutoriels Oracle
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 15/12/2006, 19h21   #1
Nouveau Membre du Club
 
Inscription : août 2006
Messages : 137
Détails du profil
Informations forums :
Inscription : août 2006
Messages : 137
Points : 26
Points : 26
Par défaut Optimisation de requete oracle

Je lance une requete oracle sur 4 instances identiques (même schéma oracle), chaque instance est sur une base différente
le temps de réponse de la requête est à l'ordre de 5mn, par contre sur linstance N°: 1, la requete ne repond pas pourtant tout est similaire, voici la requête et son plan d'exécution sur cette instance°1 :

Code :
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
SELECT  DISTINCT psc.vente_id , pp.msisdn,sum(pp.amount),count(*) 
FROM ppc_sim_cust psc, ppc_payments pp 
WHERE pp.opsc_ask_state=5 
AND pp.opsc_reply=0 
AND psc.offre_id ='41'
AND psc.STATUS = 'i' 
AND psc.stamsi = 'A' 
AND psc.vente_id = pp.vente_id
AND ((pp.opsc_reply_date IS NULL 
      AND to_date('20061120','YYYYMMDD')<=pp.insert_date )
  OR (pp.opsc_reply_date IS NOT NULL 
      AND to_date('20061120','YYYYMMDD')<=pp.opsc_reply_date )) 
AND ( (pp.payment_object = 'R' AND pp.payment_type='RIB' ) OR ( pp.payment_object = 'R' AND pp.payment_type='CB') OR ( pp.payment_object = 'R' AND pp.payment_type='SC') OR ( pp.payment_object = 'R' AND pp.payment_type='DAB'))
AND psc.vente_id NOT LIKE '%1'
GROUP BY psc.vente_id , pp.msisdn
HAVING  count(*) > 4;
Pourriez vous me dire d'ou pourrait venir cette difference de temps d'execution entre les instances et comment la trouver, et comment opitmiser cette requete, malgré que (AND psc.vente_id NOT LIKE '%1') n'utilse pas l'index a cause du %.

Les deux tables ont un index sur le vente_id


Merci de votre reponse,

cdt,
Fichiers attachés
Type de fichier : doc PlanExecution.doc (100,5 Ko, 21 affichages)
Mehdilis est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 15/12/2006, 19h22   #2
Nouveau Membre du Club
 
Inscription : août 2006
Messages : 137
Détails du profil
Informations forums :
Inscription : août 2006
Messages : 137
Points : 26
Points : 26
Le plan d'execution est en PJ
Merci
Mehdilis est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 15/12/2006, 20h43   #3
Membre Expert
 
Avatar de nuke_y
 
Inscription : mai 2004
Messages : 1 812
Détails du profil
Informations forums :
Inscription : mai 2004
Messages : 1 812
Points : 1 609
Points : 1 609
On pourrait avoir le plan sur une instance où ça va bien ?
__________________
Il vaut mieux monopoliser son intelligence sur des bêtises que sa bêtise sur des choses intelligentes.

Mon combat pour les droits des consommateurs face aux abus des grandes marques.
nuke_y est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 16/12/2006, 18h57   #4
Membre Expert
 
Inscription : avril 2006
Messages : 1 024
Détails du profil
Informations forums :
Inscription : avril 2006
Messages : 1 024
Points : 1 175
Points : 1 175
Plusieurs remarques et questions
- Y a-t-il exactement les mêmes données sur toutes les bases ?
- Les stats sont-t-elle à jour sur toutes les bases ?
- Y a-t-il dans toutes les clauses de filtrage, une (ou une combinaison) qui est particulièrement discriminante (disons, renvoyant moins d'1/10 des données sur sa table...)
- Les colonnes vente_id sont-elle indexées sur les 2 tables ?
- Le distinct est parfaitement inutile puisqu'il y a un group-by (oracle l'a éliminé de lui meme d'après le plan)
- tant qu'a faire un group-by sur vente_id, autant prendre la colonne coté PP et non PSC, histoire que les 2 colonnes de groupement appartiennent à la même table.
remi4444 est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 18/12/2006, 13h42   #5
Membre régulier
 
Antoine
Administrateur de base de données
Inscription : mars 2004
Messages : 79
Détails du profil
Informations personnelles :
Nom : Antoine
Localisation : Canada

Informations professionnelles :
Activité : Administrateur de base de données

Informations forums :
Inscription : mars 2004
Messages : 79
Points : 94
Points : 94
Envoyer un message via MSN à djeant Envoyer un message via Yahoo à djeant
Je vois que tu as une clause :
Code :
 AND psc.vente_id NOT LIKE '%1'
dans ta requête, il est souvent judicieux d'éviter d'utiliser un like avec un motif qui commence par %.
Peux tu tester la même requête sans ce like ?
djeant est déconnecté   Envoyer un message privé Réponse avec citation 00
Réponse Proposer ce sujet en actualité
Outils de la discussion



Fuseau horaire GMT +2. Il est actuellement 09h39.


 
 
 
 
Partenaires

Hébergement Web