Précédent   Forum des professionnels en informatique > Bases de données > Oracle > SQL
SQL Forum d'entraide sur le SQL pour 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 17/01/2012, 18h52   #1
Invité de passage
 
Inscription : février 2009
Messages : 6
Détails du profil
Informations forums :
Inscription : février 2009
Messages : 6
Points : 0
Points : 0
Par défaut Recherche d'un sous-ensemble / Performances

Bonjour,

J'ai une table A qui contient une colonne X en XML_TYPE.
J'ai une table B qui contient également une colonne X en XML_TYPE.

La table A : 600 000 rows
La table B : 8 000 000 rows

Je dois chercher pour tous les éléments de A tous ceux déjà présent dans B, du style :
Code :
1
2
3
4
5
6
7
8
9
10
 
SELECT
   *
FROM
   A,B
WHERE
   extractValue(A.X,'/Noeud1') = extractValue(B.X,'/Noeud1')
   AND extractValue(A.X,'/Noeud2') = extractValue(B.X,'/Noeud2')
...
   AND extractValue(A.X,'/Noeud7') = extractValue(B.X,'/Noeud7')

Que feriez-vous pour optimiser les performances de la requête ?
(j'ai essayé de créer des index sur les xmltype mais cela reste coûteux)

Merci d'avance
jerome_ est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 17/01/2012, 19h57   #2
Modérateur
 
Homme Fabien
Ingénieur d'études en décisionnel
Inscription : septembre 2008
Messages : 5 686
Détails du profil
Informations personnelles :
Nom : Homme Fabien
Âge : 34
Localisation : France, Yvelines (Île de France)

Informations professionnelles :
Activité : Ingénieur d'études en décisionnel
Secteur : Arts - Culture

Informations forums :
Inscription : septembre 2008
Messages : 5 686
Points : 10 435
Points : 10 435
Envoyer un message via ICQ à Waldar Envoyer un message via Skype™ à Waldar
Le mieux je pense ça reste l'ensembliste :
Code :
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
SELECT extractValue(X,'/Noeud1') AS n1
     , extractValue(X,'/Noeud2') AS n2
     , extractValue(X,'/Noeud3') AS n3
     , extractValue(X,'/Noeud4') AS n4
     , extractValue(X,'/Noeud5') AS n5
     , extractValue(X,'/Noeud6') AS n6
     , extractValue(X,'/Noeud7') AS n7
  FROM A
intersect
SELECT extractValue(X,'/Noeud1') AS n1
     , extractValue(X,'/Noeud2') AS n2
     , extractValue(X,'/Noeud3') AS n3
     , extractValue(X,'/Noeud4') AS n4
     , extractValue(X,'/Noeud5') AS n5
     , extractValue(X,'/Noeud6') AS n6
     , extractValue(X,'/Noeud7') AS n7
  FROM B;
__________________
Email : http://scr.im/waldar
Waldar est déconnecté   Envoyer un message privé Réponse avec citation 10
Réponse Proposer ce sujet en actualité
Outils de la discussion



Fuseau horaire GMT +2. Il est actuellement 21h45.


 
 
 
 
Partenaires

Hébergement Web