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 :

Optimisation requête sur date [12c]


Sujet :

SQL Oracle

  1. #1
    Membre éprouvé
    Homme Profil pro
    Inscrit en
    Novembre 2008
    Messages
    618
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Loire Atlantique (Pays de la Loire)

    Informations forums :
    Inscription : Novembre 2008
    Messages : 618
    Par défaut Optimisation requête sur date
    Bonjour,

    Je souhaite créer une requête SQL qui me restitue, entre autres, la somme des quantités commandées par mois depuis 1 an.

    Pour cela, j'ai rédigé la requête suivante (pour un mois):

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
     
    select article, sum(qte_vendue) as total_qte_cmde
    from CUSTOMER_ORDER_LINE
    where cl.date_entered >= add_months(trunc(sysdate,'mm'),-11)
    and date_creation < add_months(trunc(sysdate,'mm'),-10)
    group by article
    Est-il possible d'optimiser cette requête que je fais 12 fois avec des jointures externes ?

    En lançant la requête plusieurs fois à la suite, j'ai le message suivant:

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    RA-04036: la mémoire PGA utilisée par l'instance est supérieure à PGA_AGGREGATE_LIMIT
    04036. 00000 -  "PGA memory used by the instance exceeds PGA_AGGREGATE_LIMIT"
    Merci d'avance.

  2. #2
    Modérateur
    Avatar de al1_24
    Homme Profil pro
    Retraité
    Inscrit en
    Mai 2002
    Messages
    9 135
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 64
    Localisation : France, Val de Marne (Île de France)

    Informations professionnelles :
    Activité : Retraité
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Mai 2002
    Messages : 9 135
    Par défaut
    Il nous faudrait a requête complète pour essayer de comprendre où se peut se trouver le problème
    Y a-t-il des index sur cette table ? Lesquels ?
    Est-elle partitionnée ? Sur quelle(s) colonne(s) ?
    Modérateur Langage SQL
    Règles du forum Langage SQL à lire par tous, N'hésitez pas à consulter les cours SQL
    N'oubliez pas le bouton et pensez aux balises
    [code]
    Si une réponse vous a aidé à résoudre votre problème, n'oubliez pas de voter pour elle en cliquant sur
    Aide-toi et le forum t'aidera : Un problème exposé sans mentionner les tentatives de résolution infructueuses peut laisser supposer que le posteur attend qu'on fasse son travail à sa place... et ne donne pas envie d'y répondre.

  3. #3
    Membre éprouvé
    Homme Profil pro
    Inscrit en
    Novembre 2008
    Messages
    618
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Loire Atlantique (Pays de la Loire)

    Informations forums :
    Inscription : Novembre 2008
    Messages : 618
    Par défaut
    Il s'agit de vues d'un ERP.

    La table derrière la vue des lignes de commande client n'a pas d'index sur les champs de la clause where.

  4. #4
    Modérateur
    Avatar de escartefigue
    Homme Profil pro
    bourreau
    Inscrit en
    Mars 2010
    Messages
    10 604
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Loir et Cher (Centre)

    Informations professionnelles :
    Activité : bourreau
    Secteur : Finance

    Informations forums :
    Inscription : Mars 2010
    Messages : 10 604
    Billets dans le blog
    10
    Par défaut
    Bonjour,

    Il suffit de construire une table des périodes AAMM et de faire une jointure avec cette table en groupant par article et par mois

  5. #5
    Membre éprouvé
    Homme Profil pro
    Inscrit en
    Novembre 2008
    Messages
    618
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Loire Atlantique (Pays de la Loire)

    Informations forums :
    Inscription : Novembre 2008
    Messages : 618
    Par défaut
    Comment fais-je pour passer le lignes en colonnes ensuite ?

    J'ai vraiment bcp de tables dans ma requêtes (150 lignes de requêtes).

  6. #6
    McM
    McM est déconnecté
    Expert confirmé

    Homme Profil pro
    Développeur Oracle
    Inscrit en
    Juillet 2003
    Messages
    4 580
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Bouches du Rhône (Provence Alpes Côte d'Azur)

    Informations professionnelles :
    Activité : Développeur Oracle

    Informations forums :
    Inscription : Juillet 2003
    Messages : 4 580
    Billets dans le blog
    4
    Par défaut
    Ce serait pas un truc comme ça que tu veux faire (1 colonne par mois) ?

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    SELECT article, 
    		SUM(CASE WHEN cl.date_entered >= ADD_MONTHS(TRUNC(SYSDATE,'mm'),-11) AND date_creation < ADD_MONTHS(TRUNC(SYSDATE,'mm'),-10) THEN  qte_vendue END) AS qte_cmde11,
    		SUM(CASE WHEN cl.date_entered >= ADD_MONTHS(TRUNC(SYSDATE,'mm'),-10) AND date_creation < ADD_MONTHS(TRUNC(SYSDATE,'mm'),-9) THEN  qte_vendue END) AS qte_cmde10,
    		SUM(CASE WHEN cl.date_entered >= ADD_MONTHS(TRUNC(SYSDATE,'mm'),-9) AND date_creation < ADD_MONTHS(TRUNC(SYSDATE,'mm'),-8) THEN  qte_vendue END) AS qte_cmde09,
    	...
    FROM CUSTOMER_ORDER_LINE
    WHERE cl.date_entered >= ADD_MONTHS(TRUNC(SYSDATE,'mm'),-11)
    GROUP BY article

  7. #7
    Membre éprouvé
    Homme Profil pro
    Inscrit en
    Novembre 2008
    Messages
    618
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Loire Atlantique (Pays de la Loire)

    Informations forums :
    Inscription : Novembre 2008
    Messages : 618
    Par défaut
    Merci bcp pour cette dernière réponse.

+ Répondre à la discussion
Cette discussion est résolue.

Discussions similaires

  1. [REQ] Requête sur date et heure
    Par benazerty dans le forum Requêtes et SQL.
    Réponses: 4
    Dernier message: 26/06/2006, 13h34
  2. [sql server] requête sur dates et heures (format du résultat
    Par isachat666 dans le forum Langage SQL
    Réponses: 1
    Dernier message: 21/02/2006, 13h48
  3. Requète sur dates compliquée ...
    Par itklif2 dans le forum Requêtes
    Réponses: 7
    Dernier message: 28/11/2005, 23h31
  4. [ADO] Requète sur dates
    Par cdlr27 dans le forum Bases de données
    Réponses: 3
    Dernier message: 26/01/2005, 22h39
  5. Requête sur date
    Par guenfood dans le forum Access
    Réponses: 11
    Dernier message: 08/12/2004, 16h11

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