Bonjour
Je dois faire un select into d'une requête avec 1234775449 lignes, quel serais la façon plus performante de le faire via PL/SQL?
Merci.
Version imprimable
Bonjour
Je dois faire un select into d'une requête avec 1234775449 lignes, quel serais la façon plus performante de le faire via PL/SQL?
Merci.
Pfiou, tu peux pas faire ce SELECT en plusieurs fois et stocker le résultat dans une table au fur et à mesure? La quantité de données à gérer est énorme, ça va ralentir ton traitement...
Tu peux essayer les optimisations suivantes :
1 - BULK COLLECT : https://blogs.oracle.com/oraclemagaz...ect-and-forall
2 - lancer ton SELECT en parallèle avec un hint
3 - découper ton SELECT en 1000 SELECTs via une boucle
4 - ...
Bonjour,
Manipuler 1 milliard de lignes c'est pas courant. Pourquoi dans un "select into"? Que veux-tu faire avec ces lignes? Si tu veux les insérer dans une table alors utilise le parallélisme natif ou dbms_parallel_execute. J'espère que tes ressources sont suffisamment bien taillées pour une telle volumétrie.
L’objectif est d’alimenter une table de notre DWH qui sera consulter par les utilisateurs.
Et un INSERT ... SELECT ... ne répondrait pas à ton besoin ?
Et j'ajouterai en ciblant sur des ensembles de partitions type au jour ou au mois selon vos données sources (je suppose qu'une table d'un milliard de lignes est partitionnée).
Une petite boucle PL/SQL anonyme (ou pas) fera ça tranquillement. Pensez bien à faire un peu de traces si jamais le traitement devait planter.