|
Publicité ' | |||||||||||||||||||||||
|
|
#1 | ||||
|
Invité de passage
![]() |
Bonjour,
Je me permets de vous demander de l'aide pour optimiser une réplication de datas. Je ne suis pas un As en SQL et je pense que beaucoup de chose vont vous choquer (index, format de la base...), alors n'hésiter pas ! Posons le contexte : Je fais un export de données d'une base Informix, j'obtiens donc de nombreux fichiers ctl variant de 5Ko à 32Mo. Ces fichiers sont stockés dans un répertoire partagé. Un cron (je suis sur Aix 5.3) s'occupe ensuite d'importer ses données dans un infocentre, bdd Oracle 8i. J'ai modifié il y a peu de temps la taille des blocs (de 4ko à 16ko). Mais c'est là que le bas blesse, l'import est très très long (>72 heures Je ne peux pas vous énoncer les trop nombreuses étapes d'import mais je pense qu'il serait intéressant que je vous expose les principales requêtes qui posent problèmes... On charge dans une table Result_Trait (aucun index) de très nombreux résultats qui sont ensuite triés dans d'autres tables suivant leur paramètres. On utilise donc des curseurs, des loops, des access full... Par exemple on insert une partie des résultats dans une autre table Result_Man par le sql suivant : Code :
Code :
Auriez vous des pistes à me proposer ? Y'a t'il du code choquants pour les expert du forum ? ![]() Merci d'avance pour votre aide. William |
||||
|
|
00
|
|
|
#2 | ||
![]() ![]() Inscription : janvier 2004 Messages : 15 861 ![]() |
pourquoi utiliser des curseurs et faire un ORDER BY?
Code :
|
||
|
|
00
|
|
|
#3 |
|
Invité de passage
![]() |
En effet... Il n'y a aucune utilité de mettre en ORDER BY (je ne suis pas la poule qui est pondu ces lignes de codes...) ? En le supprimant je devrais déjà gagné un peu de temps de traitement non ?
Je ne connais pas cette transaction, je vais donc me documenter. Merci de tes conseils. |
|
|
00
|
|
|
#4 | |
![]() ![]() Inscription : janvier 2004 Messages : 15 861 ![]() |
Citation:
|
|
|
|
00
|
|
|
#5 | |||
|
Invité de passage
![]() |
Citation:
Code :
|
|||
|
|
00
|
|
|
#6 |
![]() ![]() Inscription : janvier 2004 Messages : 15 861 ![]() |
Oui, sauf que la syntaxe est incorrecte
|
|
|
00
|
|
|
#7 | ||||
|
Invité de passage
![]() |
Arf le mauvais...
Exemple 10 : http://sqlpro.developpez.com/cours/sqlaz/dml/#LII-E Code :
Code :
|
||||
|
|
00
|
|
|
#8 | ||||
![]() ![]() Inscription : janvier 2004 Messages : 15 861 ![]() |
Non
Code :
C'est pourquoi j'avais proposé la syntaxe sans les colonnes : Code :
|
||||
|
|
00
|
|
|
#9 |
|
Invité de passage
![]() |
Décidément
|
|
|
00
|
|
|
#10 | ||
|
Invité de passage
![]() |
Pfffffffffff y'a pas photo... Dix fois plus rapide...
Sinon je recherche bien pour mon update avec BULK mais c'est difficile de trouver des exemples précis... C'est donc si j'ai bien compris des insert via un fichier de données ? Mais je n'ai trouvé aucun exemple pour un update ? Sinon voici le dernier SQL qui pose un gros problème : Code :
|
||
|
|
00
|
|
|
#11 |
![]() ![]() Inscription : janvier 2004 Messages : 15 861 ![]() |
Une rêgle d'or : il vaut toujours mieux traiter 1000000 lignes une fois que une ligne 1000000 fois
|
|
|
00
|
|
|
#12 |
|
Invité de passage
![]() |
J'imagine qu'en reprenant notre discussion précédente je peux commencer par enlever le :
dans le curseur... Car j'ai du mal à imaginer comment faire pour simplifier ce sql sans utiliser de cursor.... |
|
|
00
|
Copyright © 2000-2012 - www.developpez.com