Bonjour,
Je ne m'y connais pas beaucoup en sql et je voudrais simplifier une requête.
La situation :
J'ai deux tables dont l'une a 1 300 000 lignes (HT02_EXPDM) et l'autre 1 400 000 lignes (VI02_LGFAC) .
Je fais la requête suivante :
Je parcours donc une table A de 1 400 000 lignes et j'insère dans la table B de 1 300 000 lignes les enregistrements de A si ils ne sont pas déjà dans la table B de 1 300 000 lignes
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6 INSERT INTO HT02_EXPDM (HT02IDFACT, HT02IDLGN) SELECT VI02IDFACT_VI01IDFACT, VI02IDLGN FROM VI02_LGFAC WHERE VI02_LGFAC.VI02IDFACT_VI01IDFACT NOT IN (SELECT DISTINCT HT02IDFACT FROM HT02_EXPDM); COMMIT;
Je lance cette commande à la main dans Sql developper pour alimenter ma table oracle.
Le problème c'est que le traitement n'aboutit pas, une barre m'indiquant que le traitement est toujours en cours ( au bout de 12h).
Pour m'assurer que la requête marche je l'ai faite tourner avec deux tables contenant 5000 d'enregistrement et cela a prit 5 secondes environs donc si on fait un petit calcul on s'imagine que 12 h c'est largement assez pour que le traitement est pu finir avec 1 300 000 lignes.
1 - Je voudrais donc savoir si cette requête peut être simplifiée pour être moins gourmande et moins lourde ?
2 - Est il possible de découper ce genre de requête ?
3 - D'où pourrais venir mon problème ?






Répondre avec citation



N'oubliez pas le bouton
et pensez aux balises [code]




Partager