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

Administration Oracle Discussion :

Vues et Index


Sujet :

Administration Oracle

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Rédacteur/Modérateur

    Avatar de Antoun
    Homme Profil pro
    Architecte décisionnel
    Inscrit en
    Octobre 2006
    Messages
    6 288
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 55
    Localisation : France, Paris (Île de France)

    Informations professionnelles :
    Activité : Architecte décisionnel
    Secteur : Conseil

    Informations forums :
    Inscription : Octobre 2006
    Messages : 6 288
    Par défaut Vues et Index
    Bonjour,

    Je récupère une série de tables Machin2002, Machin2003, Machin2004, etc. (oui c'est nul, mais mon client ne peut plus changer). Je fais une vue qui les unione afin qu'on puisse faire du reporting multi-annuel, sur le modèle :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
     
    SELECT Truc, Bidule, Chouette, 2002 AS Annee
    FROM Machin2002
    UNION ALL
    SELECT Truc, Bidule, Chouette, 2003 AS Annee
    FROM Machin2003
    ...
    Comment vont se comporter les vues faces aux index ? Il y a environ 500 000 lignes dans la vue finale.

    Y aurait-il un gros bénéfice de performance à utiliser des vues matérialisées et des index, éventuellement avec un partitionnement par liste, ou bien l'optimiseur va-t-il correctement utiliser les index des tables-sources et les constantes que j'ai placées ?

  2. #2
    Membre Expert
    Avatar de LeoAnderson
    Profil pro
    Inscrit en
    Septembre 2004
    Messages
    2 938
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Septembre 2004
    Messages : 2 938
    Par défaut
    Une vue n'est qu'un ordre select enregistré dans la base.

    Si les selects unitaires utilisent les indexes, l'utilisation de la vue continuera.

    mais quelle est la fréquence d'interrogation de cette vue ?

  3. #3
    Rédacteur/Modérateur

    Avatar de Antoun
    Homme Profil pro
    Architecte décisionnel
    Inscrit en
    Octobre 2006
    Messages
    6 288
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 55
    Localisation : France, Paris (Île de France)

    Informations professionnelles :
    Activité : Architecte décisionnel
    Secteur : Conseil

    Informations forums :
    Inscription : Octobre 2006
    Messages : 6 288
    Par défaut
    Citation Envoyé par LeoAnderson Voir le message
    Une vue n'est qu'un ordre select enregistré dans la base.

    Si les selects unitaires utilisent les indexes, l'utilisation de la vue continuera.
    OK... quid des constantes 2002, 2003, etc ?
    Citation Envoyé par LeoAnderson Voir le message

    mais quelle est la fréquence d'interrogation de cette vue ?
    Je ne sais pas encore... d'où le fait que je m'interroge sur les problématiques de performance.

  4. #4
    Expert confirmé
    Avatar de laurentschneider
    Homme Profil pro
    Administrateur de base de données
    Inscrit en
    Décembre 2005
    Messages
    2 944
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Suisse

    Informations professionnelles :
    Activité : Administrateur de base de données
    Secteur : Finance

    Informations forums :
    Inscription : Décembre 2005
    Messages : 2 944
    Par défaut
    Citation Envoyé par Antoun Voir le message
    Bonjour,

    Je récupère une série de tables Machin2002, Machin2003, Machin2004, etc. (oui c'est nul, mais mon client ne peut plus changer). Je fais une vue qui les unione afin qu'on puisse faire du reporting multi-annuel, sur le modèle :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
     
    SELECT Truc, Bidule, Chouette, 2002 AS Annee
    FROM Machin2002
    UNION ALL
    SELECT Truc, Bidule, Chouette, 2003 AS Annee
    FROM Machin2003
    ...
    Comment vont se comporter les vues faces aux index ? Il y a environ 500 000 lignes dans la vue finale.

    Y aurait-il un gros bénéfice de performance à utiliser des vues matérialisées et des index, éventuellement avec un partitionnement par liste, ou bien l'optimiseur va-t-il correctement utiliser les index des tables-sources et les constantes que j'ai placées ?

    Alors d'abord c'est pas "nul" comme design, c'est du partitioning à la sauce Oracle7 :
    http://download.oracle.com/docs/cd/A....htm#index1819
    Citation Envoyé par doc
    A partition view is a view that for performance reasons brings together several tables to behave as one
    Les indexes seront correctement employés avec ce design
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    create table machin1 ( 
       truc number primary key, 
       bidule number, 
       chouette number);
    create table machin2 ( 
       truc number primary key, 
       bidule number, 
       chouette number);
    create table machin3 ( 
       truc number primary key, 
       bidule number, 
       chouette number);
    create view v as 
       select * from machin1 union all 
       select * from machin2 union all 
       select * from machin3;
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    SQL> select * from v where truc=1;
    ---------------------------------------------------------------------
    | Id  | Operation                     | Name        | Rows  | Bytes |
    ---------------------------------------------------------------------
    |   0 | SELECT STATEMENT              |             |     1 |    39 | 
    |   1 |  VIEW                         | V           |     1 |    39 |
    |   2 |   UNION-ALL PARTITION         |             |       |       |
    |   3 |    TABLE ACCESS BY INDEX ROWID| MACHIN1     |     1 |    39 |
    |*  4 |     INDEX UNIQUE SCAN         | SYS_C003668 |     1 |       |
    |   5 |    TABLE ACCESS BY INDEX ROWID| MACHIN2     |     1 |    39 |
    |*  6 |     INDEX UNIQUE SCAN         | SYS_C003669 |     1 |       |
    |   7 |    TABLE ACCESS BY INDEX ROWID| MACHIN3     |     1 |    39 |
    |*  8 |     INDEX UNIQUE SCAN         | SYS_C003670 |     1 |       |
    ---------------------------------------------------------------------

  5. #5
    Rédacteur/Modérateur

    Avatar de Antoun
    Homme Profil pro
    Architecte décisionnel
    Inscrit en
    Octobre 2006
    Messages
    6 288
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 55
    Localisation : France, Paris (Île de France)

    Informations professionnelles :
    Activité : Architecte décisionnel
    Secteur : Conseil

    Informations forums :
    Inscription : Octobre 2006
    Messages : 6 288
    Par défaut
    Ton lien répond à ma question sur les constantes, merci !

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

Discussions similaires

  1. VUE ET INDEX
    Par JmL40 dans le forum Développement
    Réponses: 4
    Dernier message: 10/06/2010, 14h25
  2. vue et index
    Par Helau dans le forum PostgreSQL
    Réponses: 4
    Dernier message: 10/04/2008, 15h08
  3. [Oracle 9] Vue materialisée indexée et optimisation
    Par scornille dans le forum Oracle
    Réponses: 4
    Dernier message: 18/11/2005, 15h11
  4. [9i] Vue, Performances et Index
    Par nuke_y dans le forum Oracle
    Réponses: 5
    Dernier message: 27/06/2005, 10h47
  5. [DB2] Question sur les index et les vues
    Par ahoyeau dans le forum DB2
    Réponses: 1
    Dernier message: 14/03/2005, 08h30

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