Précédent   Forum des professionnels en informatique > Bases de données > Oracle > Administration
Administration Forum d'entraide sur l'administration du serveur Oracle
Partagez cette discussion sur d'autres réseaux sociaux : Viadeo Twitter Google Facebook Digg Delicious MySpace Yahoo
Réponse Proposer ce sujet en actualité
 
Outils de la discussion
Publicité
'
Vieux 04/12/2007, 14h36   #1
Rédacteur/Modérateur

 
Avatar de Antoun
 
Homme Antoine Dinimant
Consultant en Business Intelligence
Inscription : octobre 2006
Messages : 5 854
Détails du profil
Informations personnelles :
Nom : Homme Antoine Dinimant
Âge : 42
Localisation : France, Paris (Île de France)

Informations professionnelles :
Activité : Consultant en Business Intelligence
Secteur : Conseil

Informations forums :
Inscription : octobre 2006
Messages : 5 854
Points : 9 540
Points : 9 540
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 :
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 ?
__________________
Antoun
Expert SQL, BO, Essbase

La bible d'Essbase est parue !
Antoun est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 04/12/2007, 14h50   #2
Expert Confirmé
 
Avatar de LeoAnderson
 
Inscription : septembre 2004
Messages : 2 942
Détails du profil
Informations forums :
Inscription : septembre 2004
Messages : 2 942
Points : 2 972
Points : 2 972
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 ?
LeoAnderson est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 04/12/2007, 14h55   #3
Rédacteur/Modérateur

 
Avatar de Antoun
 
Homme Antoine Dinimant
Consultant en Business Intelligence
Inscription : octobre 2006
Messages : 5 854
Détails du profil
Informations personnelles :
Nom : Homme Antoine Dinimant
Âge : 42
Localisation : France, Paris (Île de France)

Informations professionnelles :
Activité : Consultant en Business Intelligence
Secteur : Conseil

Informations forums :
Inscription : octobre 2006
Messages : 5 854
Points : 9 540
Points : 9 540
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.
__________________
Antoun
Expert SQL, BO, Essbase

La bible d'Essbase est parue !
Antoun est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 05/12/2007, 09h49   #4
Expert Confirmé Sénior


 
Avatar de laurentschneider
 
Homme Laurent Schneider
Administrateur de base de données
Inscription : décembre 2005
Messages : 2 927
Détails du profil
Informations personnelles :
Nom : Homme Laurent Schneider
Localisation : Suisse

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

Informations forums :
Inscription : décembre 2005
Messages : 2 927
Points : 4 549
Points : 4 549
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 :
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 :
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 :
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 |       |
---------------------------------------------------------------------
__________________
Mon blog : laurentschneider.com
Mon livre : Advanced Oracle SQL Programming
laurentschneider est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 05/12/2007, 09h59   #5
Rédacteur/Modérateur

 
Avatar de Antoun
 
Homme Antoine Dinimant
Consultant en Business Intelligence
Inscription : octobre 2006
Messages : 5 854
Détails du profil
Informations personnelles :
Nom : Homme Antoine Dinimant
Âge : 42
Localisation : France, Paris (Île de France)

Informations professionnelles :
Activité : Consultant en Business Intelligence
Secteur : Conseil

Informations forums :
Inscription : octobre 2006
Messages : 5 854
Points : 9 540
Points : 9 540
Ton lien répond à ma question sur les constantes, merci !
__________________
Antoun
Expert SQL, BO, Essbase

La bible d'Essbase est parue !
Antoun est déconnecté   Envoyer un message privé Réponse avec citation 00
Réponse Proposer ce sujet en actualité Cette discussion est résolue.
Outils de la discussion



Fuseau horaire GMT +2. Il est actuellement 02h21.


 
 
 
 
Partenaires

Hébergement Web