IdentifiantMot de passe
Loading...
Mot de passe oublié ?Je m'inscris ! (gratuit)
Navigation

Inscrivez-vous gratuitement
pour pouvoir participer, suivre les réponses en temps réel, voter pour les messages, poser vos propres questions et recevoir la newsletter

SQL Oracle Discussion :

Requête Sql Oracle 8i


Sujet :

SQL Oracle

  1. #1
    Membre régulier
    Homme Profil pro
    Ingénieur développement logiciels
    Inscrit en
    Juin 2010
    Messages
    192
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Algérie

    Informations professionnelles :
    Activité : Ingénieur développement logiciels
    Secteur : Service public

    Informations forums :
    Inscription : Juin 2010
    Messages : 192
    Points : 71
    Points
    71
    Par défaut Requête Sql Oracle 8i
    Bonjour tous le monde, j'ai une deux (02) requêtes que j'ai créer ou je voudrais savoir si est il possible de faire mieux en optimisation de temps à savoir que le temps d’exécution entre PlSql et sous Delphi sans différent PlSql plus rapide en exécution que Delphi.
    SGBD utiliser :
    Oracle8 Release 8.0.5.0.0 - Production
    PL/SQL Release 8.0.5.0.0 - Production
    CORE Version 4.0.5.0.0 - Production
    TNS for 32-bit Windows: Version 8.0.5.0.0 - Production
    NLSRTL Version 3.3.2.0.0 - Production
    - Oracle Client 8 et 9i.
    - Delphi XE2.

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    SELECT SubStr(t.Periode,5,' +
        '2)||SubStr(t.periode,1,4) Periode, t.nature, t.Periode Period, Sum(' +
        't.Debit) - Sum(t.Credit) Debit FROM Linc.Secu_Ecr t WHERE t.NumeroCot ='+
        QuotedStr(Copy(Employeur.Text,1,8))+ ' And t.periode=' + QuotedStr(Copy(
           ListBox1.Items[ListBox1.ItemIndex],3, 4) + Copy( ListBox1.Items[
           ListBox1.ItemIndex], 1, 2)) + ' Having Sum(t.Debit) - Sum(t.Credit) <> 0 Group By t.Periode, t.Nature
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    Select t.Periode, t.Nature, Decode(SubStr(t.Periode, 5, 2),'+
      '''T1'', Trunc((Sum(t.Debit)-Sum(t.Credit)) * (MONTHS_BETWEEN(To_Date(SubStr('+Jour_Chois+', 1, 6), ''YYYYMM''), To_Date(SubStr(t.Periode,1,4)||''01'',''YYYYMM''))+1)/100, 2),'+
      '''T2'', Trunc((Sum(t.Debit)-Sum(t.Credit)) * (MONTHS_BETWEEN(To_Date(SubStr('+Jour_Chois+', 1, 6), ''YYYYMM''), To_Date(SubStr(t.Periode,1,4)||''03'',''YYYYMM'')))/100, 2),'+
      '''T3'', Trunc((Sum(t.Debit)-Sum(t.Credit)) * (MONTHS_BETWEEN(To_Date(SubStr('+Jour_Chois+', 1, 6), ''YYYYMM''), To_Date(SubStr(t.Periode,1,4)||''09'',''YYYYMM''))+3)/100, 2),'+
      '''T4'', Trunc((Sum(t.Debit)-Sum(t.Credit)) * (MONTHS_BETWEEN(To_Date(SubStr('+Jour_Chois+', 1, 6), ''YYYYMM''), To_Date(SubStr(t.Periode,1,4)||''09'',''YYYYMM'')))/100, 2),'+
              'Trunc((Sum(t.Debit)-Sum(t.Credit)) * (MONTHS_BETWEEN(To_Date(SubStr('+Jour_Chois+', 1, 6), ''YYYYMM''), to_date(t.Periode, ''YYYYMM'')) + 3)/100, 2)) "Montant M.R" '+
      'From Linc.Secu_Ecr t Where t.NumeroCot = '+ QuotedStr(Copy(Employeur.Text,1, 8))+
      'And t.Nature IN (''R22'', ''R07'', ''R06'', ''C22'', ''R38'', ''C38'', ''R98'', ''C98'') ' +
      'And t.Periode ='+QuotedStr(DataModule_Ecr.AdoQuery_Ecriture.FieldByName('Period').Value) +
      'Group By t.Periode, t.Nature  Order By t.Periode, t.Nature

  2. #2
    Expert éminent sénior Avatar de mnitu
    Homme Profil pro
    Ingénieur développement logiciels
    Inscrit en
    Octobre 2007
    Messages
    5 611
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    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 : 5 611
    Points : 11 252
    Points
    11 252
    Par défaut
    J'avoue à ne pas avoir compris votre question.

  3. #3
    Membre régulier
    Homme Profil pro
    Ingénieur développement logiciels
    Inscrit en
    Juin 2010
    Messages
    192
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Algérie

    Informations professionnelles :
    Activité : Ingénieur développement logiciels
    Secteur : Service public

    Informations forums :
    Inscription : Juin 2010
    Messages : 192
    Points : 71
    Points
    71
    Par défaut
    Salut et merci, Désolé, le temps d’exécution des requête avec delphi composant 'ADOQUERY' prennent plus de temps qu'avec PLSQL.
    Alors j'ai poster les requêtes pour savoir si possible de faire mieux.

  4. #4
    Expert éminent sénior Avatar de mnitu
    Homme Profil pro
    Ingénieur développement logiciels
    Inscrit en
    Octobre 2007
    Messages
    5 611
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    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 : 5 611
    Points : 11 252
    Points
    11 252
    Par défaut
    OK j'ai mieux compris! Quand vous dite PL/SQL c'est quoi précisément: un block pl/sql qui exécute les mêmes requêts, Sql Developer ou ... ?

  5. #5
    Membre régulier
    Homme Profil pro
    Ingénieur développement logiciels
    Inscrit en
    Juin 2010
    Messages
    192
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Algérie

    Informations professionnelles :
    Activité : Ingénieur développement logiciels
    Secteur : Service public

    Informations forums :
    Inscription : Juin 2010
    Messages : 192
    Points : 71
    Points
    71
    Par défaut
    PLSQL Developer un outils pour exécuter les requêtes SQL Oracle,

  6. #6
    Membre régulier
    Homme Profil pro
    Ingénieur développement logiciels
    Inscrit en
    Juin 2010
    Messages
    192
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Algérie

    Informations professionnelles :
    Activité : Ingénieur développement logiciels
    Secteur : Service public

    Informations forums :
    Inscription : Juin 2010
    Messages : 192
    Points : 71
    Points
    71
    Par défaut Requête SQL Oracle 8i
    Bonjour, Help please

  7. #7
    Expert éminent sénior Avatar de mnitu
    Homme Profil pro
    Ingénieur développement logiciels
    Inscrit en
    Octobre 2007
    Messages
    5 611
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    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 : 5 611
    Points : 11 252
    Points
    11 252
    Par défaut
    Pourriez-vous poster un exemple de la première requête que vous exécutez en PL/SQL pour que je puisse la comparer avec celle que vous avez posté ?
    J'en suis presque certain que vos problèmes vont disparaitre si vous pouvez utiliser une base des données Oracle récente la 8.0 doit dater des années 1999 quand même!
    Est-ce envisageable ?
    Sinon il va falloir poster le paramétrage de votre optimiseur et pas mal des autres informations.

  8. #8
    Membre régulier
    Homme Profil pro
    Ingénieur développement logiciels
    Inscrit en
    Juin 2010
    Messages
    192
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Algérie

    Informations professionnelles :
    Activité : Ingénieur développement logiciels
    Secteur : Service public

    Informations forums :
    Inscription : Juin 2010
    Messages : 192
    Points : 71
    Points
    71
    Par défaut
    Il faux que m'expliquer un peu mieux se qu'il vous faux comme renseignement
    pour Oracle 8 impossible de migre vers une version ultérieur pour l'instant.

    Voici une de mes requêtes exécuter sur PLSQL
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    Select t.Periode, t.Nature, Decode(SubStr(t.Periode, 5, 2),
      'T1', Trunc((Sum(t.Debit)-Sum(t.Credit)) * (MONTHS_BETWEEN(To_Date(To_Char('201612', 'YYYYMM'), 'YYYYMM'), To_Date(SubStr(t.Periode,1,4)||'01','YYYYMM'))+1)/100, 2),
      'T2', Trunc((Sum(t.Debit)-Sum(t.Credit)) * (MONTHS_BETWEEN(To_Date(To_Char('201612', 'YYYYMM'), 'YYYYMM'), To_Date(SubStr(t.Periode,1,4)||'03','YYYYMM'))  )/100, 2),
      'T3', Trunc((Sum(t.Debit)-Sum(t.Credit)) * (MONTHS_BETWEEN(To_Date(To_Char('201612', 'YYYYMM'), 'YYYYMM'), To_Date(SubStr(t.Periode,1,4)||'09','YYYYMM'))+3)/100, 2),
      'T4', Trunc((Sum(t.Debit)-Sum(t.Credit)) * (MONTHS_BETWEEN(To_Date(To_Char('201612', 'YYYYMM'), 'YYYYMM'), To_Date(SubStr(t.Periode,1,4)||'09','YYYYMM'))  )/100, 2),
            Trunc((Sum(t.Debit)-Sum(t.Credit)) * (MONTHS_BETWEEN(To_Date(To_Char('201612', 'YYYYMM'), 'YYYYMM'), To_Date(t.Periode, 'YYYYMM')) + 3)/100, 2)) "Montant M.R" 
      From Linc.Secu_Ecr t Where t.NumeroCot ='27423610'
      And t.Nature IN ('R22', 'R07', 'R06', 'C22', 'R38', 'C38', 'R98', 'C98') 
      And t.Periode ='201610'
      Group By t.Periode, t.Nature  Order By t.Periode, t.Nature
    est Merci.

  9. #9
    Membre régulier
    Homme Profil pro
    Ingénieur développement logiciels
    Inscrit en
    Juin 2010
    Messages
    192
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Algérie

    Informations professionnelles :
    Activité : Ingénieur développement logiciels
    Secteur : Service public

    Informations forums :
    Inscription : Juin 2010
    Messages : 192
    Points : 71
    Points
    71
    Par défaut Oracle 8 et SQL
    Bonjour à Tous, personne pour répondre à mon cas?

  10. #10
    Expert éminent sénior Avatar de mnitu
    Homme Profil pro
    Ingénieur développement logiciels
    Inscrit en
    Octobre 2007
    Messages
    5 611
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    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 : 5 611
    Points : 11 252
    Points
    11 252
    Par défaut
    Les deux requêtes, une exécutée dans PL/SQL Developer et l'autre dans l'appli sont similaires, c'est à dire qu'elles utilise des variables en dur et non pas des variables de liaison. Cela étant dit pourriez-vous exécuter deux ou trois foi ces requêtes avec les mêmes valeurs dans les deux cas et comparer les temps d'exécution qui doit être d'un même ordre?
    Même valeurs veut dire mettre dans le texte de l'appli la valeur 27423610 pour le composant Delphi Employeur puis pareil pour les autres zones.
    Vous devez exécuter 2 à trois fois chaque requête pour chauffer la base d'abord puis comparer les temps et nous faire état des valeurs obtenues.

    Vous devez aussi faire appel à votre dba pour retrouver le paramètre qui indique le mode de fonctionnement de l'optimiseur: RULE, COST ou CHOSE. Le paramètre devrait s'appeler optimizer_goal je pense.

Discussions similaires

  1. Réponses: 3
    Dernier message: 12/12/2008, 08h05
  2. Requête SQL Oracle
    Par salsero1 dans le forum Oracle
    Réponses: 3
    Dernier message: 22/04/2008, 13h09
  3. Parametres de requête SQL Oracle
    Par gunbol dans le forum Oracle
    Réponses: 2
    Dernier message: 19/02/2008, 14h31
  4. Tuning requêtes sql oracle
    Par Mehdilis dans le forum Oracle
    Réponses: 2
    Dernier message: 13/06/2007, 13h32
  5. Réponses: 2
    Dernier message: 04/03/2006, 10h47

Partager

Partager
  • Envoyer la discussion sur Viadeo
  • Envoyer la discussion sur Twitter
  • Envoyer la discussion sur Google
  • Envoyer la discussion sur Facebook
  • Envoyer la discussion sur Digg
  • Envoyer la discussion sur Delicious
  • Envoyer la discussion sur MySpace
  • Envoyer la discussion sur Yahoo