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 :

[VIEW][Oracle 10g]Comparaison vue/requete imbriquée


Sujet :

Oracle

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre confirmé Avatar de gojira
    Profil pro
    Inscrit en
    Mars 2006
    Messages
    94
    Détails du profil
    Informations personnelles :
    Âge : 50
    Localisation : France

    Informations forums :
    Inscription : Mars 2006
    Messages : 94
    Par défaut [VIEW][Oracle 10g]Comparaison vue/requete imbriquée
    Bonjour,

    Je souhaite savoir s'il existe une comparaison de performance entre sous-requete imbriquée et Vues.
    J'ai fait une recherche sur le forum Oracle et je n'ai rien trouvé qui permette de dire quelle est la différence au niveau performances entre:

    1.
    http://www.developpez.net/forums/sho...d.php?t=174021
    Citation Envoyé par Fred_D
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    WITH query_count AS (select ... from ... where ...)
    SELECT ...
    FROM ... , query_count qc
    WHERE col = qc.nb
    2.
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    SELECT table4.pouetpouet, ...
    FROM table1, table2, table3, (SELECT ... FROM ... WHERE ...) table4
    WHERE blablabla
    3.
    Une vue définie sur la requete (select ... from ... where ...)


    Quelle est la méthode la plus rapide et la plus performante sous Oracle 10g?
    Quels sont les points fort de chaques méthodes?
    Pourquoi choisir une plutôt qu'une autre d'un point de vu technique?

    Ou alors les différentes méthodes sont identiques et le choix concerne le développeur ou les normes de développement de la société.

    Merci d'avance pour vos réponses .
    Amicalement
    gojira

  2. #2
    Membre éclairé
    Profil pro
    Inscrit en
    Octobre 2006
    Messages
    77
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Octobre 2006
    Messages : 77
    Par défaut
    vue classique (create view) : l'interet c'est la réutilisabilité dans différente requête

    vue inline (dans le select) : pourri en general en perf, mais permet de résoudre quelques cas tordu

    vue inline (dans le from) : equivalent en perf à la vue classique (petite difference au niveau du parsing)

    vue avec le with : améliore la lisibilité du code par rapport à une vue dans le from
    autre interet : si on a besoin d'avoir plusieurs fois la vue dans la requete (union all ou jointure), oracle est souvent tenté de matérialiser la vue, c'est à dire créer une table temporaire avec le résultat de l'execution de la vue.

    Nombre de connexion à une appli en fonction du jour :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    with agg as
    (select to_char(jour,'day') jour, count(*) nb from connexion group by to_char(jour,'day'))
    select 'mini', jour, a.nb
      from (select min(nb) nb from agg) a
            , agg
      where a.nb = agg.nb
    union all
    select 'maxi', jour, a.nb
      from (select max(nb) nb from agg) a
            , agg
      where a.nb = agg.nb
    union all
    select 'moyenne', NULL, a.nb
      from (select avg(nb) nb from agg) a
    Dans ce cas, Oracle va probablement créer une table temporaire avec 7 lignes (lundi...) une seule fois. Requête très rapide, même si la table connexion est très grosse

    Et si Oracle oubli de matérialiser la table, on peut le forcer à le faire (hint materialize non documenté)

    Un autre avantage du with, c'est quand on veut travailler avec un dblink et forcer Oracle a rapatrier la table en une fois plutot que de faire une jointure sur le réseau.

  3. #3
    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
    belle démo

    Pense juste aux balises CODE à l'avenir

  4. #4
    Membre éclairé
    Profil pro
    Inscrit en
    Octobre 2006
    Messages
    77
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Octobre 2006
    Messages : 77
    Par défaut
    Ben j'essaye d'y penser au balise CODE... Mais des fois, on oubli...

    Surtout quand c'est une réponse faite en 2 minute le temps qu'une requete tourne...

  5. #5
    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
    c'est long pour une requête

  6. #6
    Membre éclairé
    Profil pro
    Inscrit en
    Octobre 2006
    Messages
    77
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Octobre 2006
    Messages : 77
    Par défaut
    C'est de l'agrégation en BI, donc c'est plutôt rapide.
    Je suis même surpris de mes temps de réponse car sous windows, 4 processeurs, seulement 4Go de RAM (limite windows 32 bits) mais heureusement un SAN vaillant (mais frustrant : j'ai pas la main sur les stratégies disques qui sont derrière)

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

Discussions similaires

  1. Réponses: 2
    Dernier message: 18/03/2009, 12h35
  2. Oracle/XML avec une requete imbriquée
    Par FABFAB125 dans le forum SQL
    Réponses: 16
    Dernier message: 20/07/2007, 12h52
  3. [Oracle 10G] Vue matérialisé
    Par slefevre01 dans le forum Oracle
    Réponses: 1
    Dernier message: 20/10/2005, 11h32
  4. Requete imbriqué sous delphi avec SGBD oracle accepté ?
    Par EssaiEncore dans le forum Bases de données
    Réponses: 2
    Dernier message: 13/09/2005, 09h55

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