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 06/09/2011, 10h45   #1
Futur Membre du Club
 
Inscription : juillet 2009
Messages : 45
Détails du profil
Informations forums :
Inscription : juillet 2009
Messages : 45
Points : 15
Points : 15
Par défaut amélioration du temps de réponse

Bonjour,

j'ai une base de donnée qui comprend 650 000 records avec un index sur 3 rubriques (STE ,EX ,ITEM) dans cet ordre.
voila mon problème le code suivante met plus de 2 secondes
Code :
1
2
3
4
5
SELECT 	ROUND(MT_MN /(QTE*QTE2) ,2) ,ROUND(MT_TTC /(QTE*QTE2) ,2) 
FROM E_MVT  
WHERE STE= 'UC' AND EX= '11' AND ITEM='100022' AND QTE*QTE2 <> 0 
AND NUMERO IN (SELECT NUMERO FROM E_MVT WHERE STE= 'UC' AND EX= '11' AND TIERS='224005' AND  SENS= 1 AND  ETAT= 0) 
ORDER BY DATCPT DESC;
la sous requête est très rapide seule, 5 dixième de seconde ,la requête principale met elle seule 2 secondes mais si j'enlève "and ex=11" le délais passe en dessous de la seconde.

est ce qu'en changeant mon index, ou plutôt l'ordre des rubriques je vais gagner en temps de réponse ?

merci
antalata est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 06/09/2011, 11h23   #2
Membre éclairé
 
Avatar de boussafi
 
Homme
Ingénieur développement logiciels
Inscription : septembre 2007
Messages : 342
Détails du profil
Informations personnelles :
Sexe : Homme
Localisation : Algérie

Informations professionnelles :
Activité : Ingénieur développement logiciels
Secteur : Industrie

Informations forums :
Inscription : septembre 2007
Messages : 342
Points : 397
Points : 397
Envoyer un message via Yahoo à boussafi Envoyer un message via Skype™ à boussafi
pour que le temps de repnse soit rapide, il y a plusieurs criteres:
1/ il faut que sort_size_area soit etudié pour que le tri ne se fait pas sur disque.
2/ les index: de preference, le(s) champ(s) sur le(s) quel(s) on fait le tri; il faut il(s) soit(ent) indéxé(s). dans ce cas tu peut créer un index sur DATCPT
boussafi est déconnecté   Envoyer un message privé Réponse avec citation 01
Vieux 06/09/2011, 11h24   #3
Expert Confirmé Sénior
 
Avatar de mnitu
 
Homme Marius Nitu
Ingénieur développement logiciels
Inscription : octobre 2007
Messages : 3 311
Détails du profil
Informations personnelles :
Nom : Homme Marius Nitu
Localisation : France, Marne (Champagne Ardenne)

Informations professionnelles :
Activité : Ingénieur développement logiciels
Secteur : High Tech - Éditeur de logiciels

Informations forums :
Inscription : octobre 2007
Messages : 3 311
Points : 5 813
Points : 5 813
Code :
1
2
3
4
5
6
7
8
9
10
11
 
SELECT ROUND(MT_MN /(QTE*QTE2) ,2) ,ROUND(MT_TTC /(QTE*QTE2) ,2) 
  FROM E_MVT  
 WHERE STE= 'UC' 
   AND EX= '11' 
   AND ITEM='100022' 
   AND QTE*QTE2 <> 0 
   AND TIERS='224005' 
   AND  SENS= 1 
   AND  ETAT= 0
ORDER BY DATCPT DESC;
mnitu est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 06/09/2011, 11h40   #4
Membre éclairé
 
Avatar de boussafi
 
Homme
Ingénieur développement logiciels
Inscription : septembre 2007
Messages : 342
Détails du profil
Informations personnelles :
Sexe : Homme
Localisation : Algérie

Informations professionnelles :
Activité : Ingénieur développement logiciels
Secteur : Industrie

Informations forums :
Inscription : septembre 2007
Messages : 342
Points : 397
Points : 397
Envoyer un message via Yahoo à boussafi Envoyer un message via Skype™ à boussafi
je voix que tu as un plus dans ta requete;

tu peux la refomuler comme:

Code :
1
2
3
4
5
SELECT 	ROUND(MT_MN /(QTE*QTE2) ,2) ,ROUND(MT_TTC /(QTE*QTE2) ,2) 
FROM E_MVT  
WHERE STE= 'UC' AND EX= '11' AND ITEM='100022' AND QTE*QTE2 <> 0 
AND TIERS='224005' AND  SENS= 1 AND  ETAT= 0 
ORDER BY DATCPT DESC;
boussafi est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 22/11/2011, 12h57   #5
Futur Membre du Club
 
Inscription : juillet 2009
Messages : 45
Détails du profil
Informations forums :
Inscription : juillet 2009
Messages : 45
Points : 15
Points : 15
Par défaut merci de vos réponses

les champs tiers et item ne sont pas enregistrés dans la même ligne mais dans la même pièce avec comme dénominateur commun le champs 'NUMERO'.
d'ou la sous requete indispensable.

merci de vous y être attardés.
antalata est déconnecté   Envoyer un message privé Réponse avec citation 01
Vieux 22/11/2011, 14h50   #6
Modérateur
 
Homme Fabien
Ingénieur d'études en décisionnel
Inscription : septembre 2008
Messages : 5 686
Détails du profil
Informations personnelles :
Nom : Homme Fabien
Âge : 34
Localisation : France, Yvelines (Île de France)

Informations professionnelles :
Activité : Ingénieur d'études en décisionnel
Secteur : Arts - Culture

Informations forums :
Inscription : septembre 2008
Messages : 5 686
Points : 10 431
Points : 10 431
Envoyer un message via ICQ à Waldar Envoyer un message via Skype™ à Waldar
Est-il possible d'avoir le script de création de la table avec les index et contraintes associés ?
__________________
Email : http://scr.im/waldar
Waldar est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 22/11/2011, 17h48   #7
Membre Expert
 
Inscription : août 2009
Messages : 779
Détails du profil
Informations forums :
Inscription : août 2009
Messages : 779
Points : 1 098
Points : 1 098
Citation:
Envoyé par antalata Voir le message
les champs tiers et item ne sont pas enregistrés dans la même ligne mais dans la même pièce avec comme dénominateur commun le champs 'NUMERO'.
d'ou la sous requete indispensable.

merci de vous y être attardés.
Il faudrait voir l'ensemble de tes requêtes, mais si tu utilises dans ta base cette colonne comme facteur de recherche ou d'aggrégation, il semble de bon aloi d'ajouter un index portant sur la colonne "NUMERO". Éventuellement complété (mais là ça devient très spécifique à ta requête) par la colonne "ITEM".

Cependant, est-ce que ces 2 secondes pour la requête sont vraiment handicapants ? Ajouter un index allongera les temps d'insertion/update.
Rei Ichido est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 22/12/2011, 09h49   #8
Futur Membre du Club
 
Inscription : juillet 2009
Messages : 45
Détails du profil
Informations forums :
Inscription : juillet 2009
Messages : 45
Points : 15
Points : 15
Par défaut merci de vos réponses

en fait j'ai forcé l'utilisation des index.
antalata 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 21h52.


 
 
 
 
Partenaires

Hébergement Web