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

Oracle Discussion :

Tuning requête et indexes sur fonction


Sujet :

Oracle

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre confirmé
    Profil pro
    Inscrit en
    Août 2006
    Messages
    137
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Août 2006
    Messages : 137
    Par défaut Tuning requête et indexes sur fonction
    Bonjour à tous,
    Sur Oracle9iR2,
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    SELECT SUBSTR(conso.other_party,1,5)||chr(9)||SUM(conso.call_duration)||chr(9)||SUM(conso.call_cost)||chr(9)||call_type||chr(9)||cust.tarsid
    FROM ppc_sim_cust cust, PPC_CONSO_PAIR conso
    WHERE conso.msisdn=cust.msisdn
    AND conso.imsi=cust.imsi
    AND TO_CHAR(call_start,'mm')='&2'
    GROUP BY SUBSTR(conso.other_party,1,5), conso.call_type, cust.tarsid;
    Les colonnes call_start et conso.other_party c’est des colonnes indexées, malheureusement sont négligés, et le temps de réponse de la requête met beaucoup de temps, pour l’optimiser, Je veux que les 2 indexes soient utilisés:

    1/ la clause :TO_CHAR(call_start,'mm')='&2' , j’ai essayé de le transformer en
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    call_start between  to_date('01/02/2007','DD/MM/YYYY') and to_date('28/02/2007','DD/MM/YYYY')
    .---> quelqu’un à une idée meilleure que la mienne ?

    mais la deuxième clause ---> je n’ai pas d’idée particuliére?


    2/ Pour ces deux clauses j’ai pensé a recréer l’index de fonction,
    Mais je pense qu’il ya des pré requis au niveau de la base ? Pourriez-vous svp m’expliquer ?

    Merci d’avance pour votre aide,

  2. #2
    Expert éminent
    Avatar de orafrance
    Profil pro
    Inscrit en
    Janvier 2004
    Messages
    15 967
    Détails du profil
    Informations personnelles :
    Âge : 48
    Localisation : France

    Informations forums :
    Inscription : Janvier 2004
    Messages : 15 967
    Par défaut
    Merci de penser à la mise en forme la prochaine fois

    1/ pas mieux, c'est très bien comme ça sauf que moi je ferais :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    AND call_start BETWEEN TO_DATE('01/' || '&2' || TO_CHAR(call_start,'YYYY'))
     AND ADD_MONTHS(TO_DATE('01/' || '&2' || TO_CHAR(call_start,'YYYY'),1)
    2/ pourquoi Oracle utiliserait-il l'index alors qu'il n'y a pas de jointure sur la colonne ?

  3. #3
    Membre chevronné Avatar de NGasparotto
    Inscrit en
    Janvier 2007
    Messages
    421
    Détails du profil
    Informations forums :
    Inscription : Janvier 2007
    Messages : 421
    Par défaut
    Citation Envoyé par Fred_D
    Merci de penser à la mise en forme la prochaine fois

    1/ pas mieux, c'est très bien comme ça sauf que moi je ferais :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    AND call_start BETWEEN TO_DATE('01/' || '&2' || TO_CHAR(call_start,'YYYY'))
     AND ADD_MONTHS(TO_DATE('01/' || '&2' || TO_CHAR(call_start,'YYYY'),1)
    La clause BETWEEN étant inclusive, il vaut mieux enlever une seconde de la seconde borne. De plus, j'incluerais le format de la date. Enfin, on peut omettre le jour :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    AND call_start BETWEEN TO_DATE('&2' || TO_CHAR(call_start,'YYYY'), 'MMYYYY')
     AND ADD_MONTHS(TO_DATE('&2' || TO_CHAR(call_start,'YYYY'),'MMYYYY'),1)-1/24/60/60
    Nicolas.

  4. #4
    Expert éminent
    Avatar de orafrance
    Profil pro
    Inscrit en
    Janvier 2004
    Messages
    15 967
    Détails du profil
    Informations personnelles :
    Âge : 48
    Localisation : France

    Informations forums :
    Inscription : Janvier 2004
    Messages : 15 967
    Par défaut
    ha oui, en effet

Discussions similaires

  1. Réponses: 1
    Dernier message: 28/02/2008, 08h17
  2. Requete group by et index sur fonction
    Par Omsey dans le forum Oracle
    Réponses: 8
    Dernier message: 26/10/2006, 10h26
  3. index sur fonction
    Par Spoutnik dans le forum PostgreSQL
    Réponses: 1
    Dernier message: 03/05/2006, 16h18
  4. [ORACLE 8i] Index sur des fonctions
    Par miloux32 dans le forum Oracle
    Réponses: 1
    Dernier message: 02/02/2006, 17h52
  5. Optimisations mysql sur les requêtes SELECT: index
    Par leo'z dans le forum Débuter
    Réponses: 2
    Dernier message: 29/11/2003, 13h23

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