Bonjour
J'ai une table structuré comme indiqué ci dessous : (50 Millions d'enregistrement)
Matable(IdClient , IdProduit)
avec Idclient IDproduit comme clé primaire.
Je sais qu'un client peut avoir au maximum 6 enregistrements : 1 par produit existant. En effet nous n'avons que 6 produits différent. Un client peut avoir l'un de ses produits, aucun produit, plusieurs produits ou encore tous les produits
J'ai un programme qui parcoure un fichier d'environ 300000 enregistrements (1enregistrement contient un idClient) et qui pour chacun a besoin de connaitre tous les produits du client afin de mettre a jour des données dans d'autre tables
Pour faire cela j'ai deux solutions qui ne me vont qu'a moitié. Quelqu'un a t il une idée ?
Solution 1 :
Problème :L'ouverture d'un curseur à chaque enregistrement ne me parait pas performant
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2 Select * from Matable where idclient = :numclient_de_l_enregistrement_du_fichier
Solution 2 :
Probleme : l'utilisation de nombreuse jointure sur une table de 50 000 000 ne me parait pas adaptée
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9
10
11
12
13
14 Select * from matable A left outer join matable B on B.idclient = A.idclient left outer join matable C on C.idclient = A.idclient left outer join matable D on D.idclient = A.idclient left outer join matable E on E.idclient = A.idclient left outer join matable F on F.idclient = A.idclient Where A.idproduit = '1' and B.idproduit = '2' and C.idproduit = '3' and D.idproduit = '4' and E.idproduit = '5' and F.idproduit = '6'









Répondre avec citation
Partager