diabolokev
Messages postés9Date d'inscriptionmercredi 1 février 2012StatutMembreDernière intervention10 janvier 2013
-
7 mars 2012 à 09:40
diabolokev
Messages postés9Date d'inscriptionmercredi 1 février 2012StatutMembreDernière intervention10 janvier 2013
-
8 mars 2012 à 14:31
Bonjour,
J'ai un petit problème lors de l'exécution de ma requête, elle est très longue (30 minutes environ pour 8200 lignes).
Le principe de mon code :
J'ai un fichier, j'extrais les informations dans un Grid sous Delphi puis je lance ma requête pour identfier le magasin et le déposant pour chaque colis.
//Requête pour identifier les colis
QUtil.SQL.Clear;
QUtil.SQL.Add (' select MAGASIN, DEPOSANT, NUMCOLIS, NUMINTERNE ');
QUtil.SQL.Add (' from TABLECOLIS, TABLEINTERNE ');
QUtil.SQL.Add (' where NUMCOLIS= NUMINTERNE ');
QUtil.SQL.Add (' and DATE > add_months(TO_DATE('+ QuotedStr(periode) +', ''DD/MM/YY''), -3) ');
QUtil.SQL.Add (' and NOMCOLIS = (' + QuotedStr(Colis) + ') ');
QUtil.Open;
QUtil.First;
Magasin := QUtil.FieldByName('MAGASIN').AsString;
Deposant := QUtil.FieldByName('DEPOSANT').AsString;
If QUtil.FieldByName('NUMCOLIS').AsString <> '' then
NCO := QUtil.FieldByName('NUMCOLIS').AsInteger;
If QUtil.FieldByName('NUMINTERNE').AsString <> '' then
NUM := QUtil.FieldByName('NUMINTERNE').AsString;
Ce que je voudrais, c'est qu'elle s'exécute plus rapidement. Si vous avez une idée, je suis preneur.
cs_Julien39
Messages postés6414Date d'inscriptionmardi 8 mars 2005StatutModérateurDernière intervention29 juillet 2020371 7 mars 2012 à 11:30
Bonjour,
Tu utilises quel SGBD ?
Tu utilises un index ? Si ce n'est pas le cas, c'est peut être une piste.
Sinon, je ne sais pas exactement d'où viennent tes paramètres, mais tu n'as peut être pas besoin de faire des jointures, il suffirait que tu fasses une requête SELECT interne je pense.
cs_Julien39
Messages postés6414Date d'inscriptionmardi 8 mars 2005StatutModérateurDernière intervention29 juillet 2020371 8 mars 2012 à 13:39
Alors essayes de remplacer ta jointure par une requete SELECT interne. Oracle calcul des statistiques qui lui permettent d'optimiser son plan d'exécution, quelques fois, il arrive que ces statistiques ralentissent un nouvelle requête sur la base.
Tu trouveras comment faire pour recalculer les stats sur internet.
Après, si la vitesse d'exécution te convient, c'est le principal.