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 :

La fonction WITH Oracle


Sujet :

Oracle

  1. #1
    Membre averti
    Inscrit en
    Janvier 2009
    Messages
    56
    Détails du profil
    Informations forums :
    Inscription : Janvier 2009
    Messages : 56
    Par défaut La fonction WITH Oracle
    bonjour tout le monde,

    j'ai utilisé la fonction with dans mon script oracle dans le but de l'optimiser, mais
    surprise, la requête a pris plus de temps que sans le with.
    ma question est : est ce que le with aide à optimiser ou pas??????

  2. #2
    Expert confirmé 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
    Par défaut
    Parfois oui, parfois non; sinon on utiliserait que le WITH.
    Donc, quelle est votre requête est comment est-vous arrivé à la conclusion qu'avec le with «*ça prends plus de temps*» ?

  3. #3
    Membre averti
    Inscrit en
    Janvier 2009
    Messages
    56
    Détails du profil
    Informations forums :
    Inscription : Janvier 2009
    Messages : 56
    Par défaut
    merci pour ta réponse,

    En fait dans ma requête, j'utilise le WITH pour construire ma table sur laquelle j'opère un select, en d'autres termes:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
     
    select a,b, C.Table_with from table 1, (WITH t as ( .....)) Table_with;
    et je répète cette procédure plusieurs fois dans mon script sql, et je ne sais pas si c'est bon ou pas.

    merci pour votre aide. ( la requête contient 1000 lignes)

  4. #4
    Expert confirmé 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
    Par défaut
    Je ne pense pas que la syntaxe que vous fournissez fonctionne.
    Ce qui fonctionne est plutôt comme ça:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
     
    With Data As (
      Select * 
        From emp
    )
    Select * 
      From dept 
           Join Data
      On (dept.deptno = data.deptno)

  5. #5
    Modérateur
    Avatar de Waldar
    Homme Profil pro
    Sr. Specialist Solutions Architect @Databricks
    Inscrit en
    Septembre 2008
    Messages
    8 454
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 47
    Localisation : France, Val de Marne (Île de France)

    Informations professionnelles :
    Activité : Sr. Specialist Solutions Architect @Databricks
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Septembre 2008
    Messages : 8 454
    Par défaut
    A priori la syntaxe fonctionne, mais je suis bien d'accord avec vous mnitu, ce n'est pas très élégant, un des avantages de WITH est justement de simplifier la lecture :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    select dummy as x, y
    from
        dual,
        (with toto as
        (select 'Y' as y from dual)
        select y from toto);
     
    X	Y

  6. #6
    Expert confirmé 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
    Par défaut
    Citation Envoyé par Waldar Voir le message
    A priori la syntaxe fonctionne...
    OK, c'est noté

  7. #7
    Membre averti
    Inscrit en
    Janvier 2009
    Messages
    56
    Détails du profil
    Informations forums :
    Inscription : Janvier 2009
    Messages : 56
    Par défaut
    Merci de votre réponses,

    Je suis tout à fait d'accord avec vous (la syntaxe), par contre la question que
    je me pose actuellement est que je n'arrive pas à obtenir plus de performances (même je suis au pire du temps d'exécution de ma requête : 800 lignes), est c'est normal ???

    pour information: j'utilise le WITH pour construire des tables que je n'ai pas physiquement, après j'opère un select.

    merci de me proposer une solution.

  8. #8
    Modérateur
    Avatar de Waldar
    Homme Profil pro
    Sr. Specialist Solutions Architect @Databricks
    Inscrit en
    Septembre 2008
    Messages
    8 454
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 47
    Localisation : France, Val de Marne (Île de France)

    Informations professionnelles :
    Activité : Sr. Specialist Solutions Architect @Databricks
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Septembre 2008
    Messages : 8 454
    Par défaut
    Il n'y a pas 36 solutions, il faudrait votre requête, le plan d'exécution, les volumétries en jeu et les temps que vous obtenez avec vos diverses requêtes.

Discussions similaires

  1. La fonction WITH Oracle
    Par saidna123 dans le forum Oracle
    Réponses: 3
    Dernier message: 24/09/2009, 17h49
  2. équivalence fonction ROWNUM (oracle) avec MySQL
    Par pblb62 dans le forum SQL Procédural
    Réponses: 8
    Dernier message: 23/01/2006, 13h50
  3. Réponses: 2
    Dernier message: 05/12/2005, 12h16
  4. fonction équivalente à la fonction MOD (oracle) dans ms-sql
    Par rodrigue50 dans le forum MS SQL Server
    Réponses: 1
    Dernier message: 14/07/2005, 16h14
  5. Locally Managed Tablespaces with oracle 8.1.7
    Par ducho dans le forum Administration
    Réponses: 16
    Dernier message: 14/10/2004, 14h18

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