Précédent   Forum des professionnels en informatique > Bases de données > Oracle
Oracle Forum Oracle : le serveur, les outils, ... Voir F.A.Q Oracle Tutoriels 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 11/12/2007, 18h25   #1
Invité de passage
 
Inscription : février 2005
Messages : 9
Détails du profil
Informations forums :
Inscription : février 2005
Messages : 9
Points : 1
Points : 1
Par défaut Astuce de partitionnement ?

Bonjour,

J’ai une table table1 (champ1, champ2, champ3, champ4)
Le champ2 de type varchar(2) contienne presque 50% des valeurs nulles.

Ma question est : est que il y’a un moyen de partitionnées la table table1 en "deux partitions" : la première partition contienne les enregistrements ou les valeurs de champ2 est no nulles, et la deuxième contienne le reste des enregistrements

NB : base de données : Oracle 10g

Merci pour votre reponse
rdjema est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 11/12/2007, 18h27   #2
Rédacteur/Modérateur
 
Avatar de orafrance
 
Inscription : janvier 2004
Messages : 15 861
Détails du profil
Informations personnelles :
Âge : 35

Informations forums :
Inscription : janvier 2004
Messages : 15 861
Points : 16 212
Points : 16 212
c'est possible mais j'ai du mal à y trouver un quelconque intérêt
orafrance est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 11/12/2007, 19h16   #3
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
Citation:
Envoyé par orafrance Voir le message
c'est possible mais j'ai du mal à y trouver un quelconque intérêt
je suis même pas sûr que ce soit possible !

RANGE : non car il n'est pas possible de définir l'interval "inférieur à NULL" ou "SUPERIEUR à NULL"
LIST : non plus, car il n'est pas possible de construire la liste
HASH : Non plus
LeoAnderson est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 11/12/2007, 20h43   #4
Rédacteur/Modérateur
 
Avatar de orafrance
 
Inscription : janvier 2004
Messages : 15 861
Détails du profil
Informations personnelles :
Âge : 35

Informations forums :
Inscription : janvier 2004
Messages : 15 861
Points : 16 212
Points : 16 212
si si LIST accepte NULL

http://download.oracle.com/docs/cd/B...i.htm#i1006532
orafrance est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 11/12/2007, 20h58   #5
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
Citation:
Envoyé par orafrance Voir le message
je pensais pas à NULL mais aux milliards d'autres valeurs que peut prendre le champ !
j'avais juste oublié "DEFAULT"...

mais l'intérêt me semble tout de même incertain....
LeoAnderson est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 11/12/2007, 22h44   #6
Rédacteur/Modérateur
 
Avatar de orafrance
 
Inscription : janvier 2004
Messages : 15 861
Détails du profil
Informations personnelles :
Âge : 35

Informations forums :
Inscription : janvier 2004
Messages : 15 861
Points : 16 212
Points : 16 212
Citation:
Envoyé par LeoAnderson Voir le message
mais l'intérêt me semble tout de même incertain....
on est d'accord
orafrance est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 12/12/2007, 13h59   #7
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
dans range, les valeurs nulles vont dans maxvalue

Code :
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
SQL> CREATE TABLE table1(champ1 number, champ2 char(2), champ3 number, 
champ4 number) partition BY range(champ2)  (
partition p1 VALUES less than ('ÿÿ'), partition p2 VALUES less than (maxvalue));
TABLE created.
SQL> INSERT INTO table1(champ2) VALUES ('x');                           
1 row created.
SQL> INSERT INTO table1(champ2) VALUES (NULL);                          
1 row created.
SQL> SELECT * FROM table1 partition (p1);                               
    CHAMP1 CH     CHAMP3     CHAMP4
---------- -- ---------- ----------
           x
SQL> SELECT * FROM table1 partition (p2);                               
    CHAMP1 CH     CHAMP3     CHAMP4
---------- -- ---------- ----------
bon, deux partitions c'est peu, tu ne voudrais pas partitioner par hash(champ1,champ2) par exemple?
__________________
Mon blog : laurentschneider.com
Mon livre : Advanced Oracle SQL Programming
laurentschneider est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 12/12/2007, 14h01   #8
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
ou alors partition by list avec NULL et DEFAULT et subpartitioning by hash(primary key) par exemple
[edit]
quoi que si ton but est d'avoir deux partitions, LIST partitioning comme mentionné ci-dessus semble tenir la route
__________________
Mon blog : laurentschneider.com
Mon livre : Advanced Oracle SQL Programming
laurentschneider est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 12/12/2007, 18h10   #9
Invité de passage
 
Inscription : février 2005
Messages : 9
Détails du profil
Informations forums :
Inscription : février 2005
Messages : 9
Points : 1
Points : 1
Merci, pour votre réponses:

Le but de cette partition est que la table table1 est plus grande (+40 millions enregistrements), et la recherche faite sur le champ champ2 sous la clause like avec la jointure d'une autre table.

Exemple table1(champ1, champ2, champ3, champ4) (champ1 est PK)
table2(ch1, ch2, ch3) (ch1 est PK, ch2 est FK de table1)

La requête: select champ1, champ2, ch3
from table1, table2
where champ1 = ch2
and champ2 like (%abcd%)

alors le but est de forcer la requête d'utiliser la partition ou les valeurs de champ2 sont non null (from table1 (partition p1), table2), pour avoir la meilleur temps de réponse
rdjema est déconnecté   Envoyer un message privé Réponse avec citation 00
Réponse Proposer ce sujet en actualité
Outils de la discussion



Fuseau horaire GMT +2. Il est actuellement 07h09.


 
 
 
 
Partenaires

Hébergement Web