|
Publicité ' | |||||||||||||||||||||||
|
|
#1 | ||||
|
Membre du Club
![]() Inscription : juin 2003 Messages : 156 ![]() |
Bonjour,
J'aimerais vous soumettre une nouvelle problématique ou plutôt avoir vos retours d'expérience quant à la façon d'effectuer de nombreux contrôles sur des données. Je m'explique. Imaginons une table classique avec ses colonnes. L'idée est de faire en gros un ou plusieurs contrôles par zone : présence, format, contenu... Est-il plus judicieux de lire chaque enregistrement à la suite et de faire les contrôles à la suite à l'intérieur d'une boucle, comme indiqué ci-après... Code :
Code :
Merci, Frédéric. |
||||
|
|
00
|
|
|
#2 | ||
|
Membre Expert
![]() Inscription : avril 2006 Messages : 1 024 ![]() |
Il faut éviter au maximum de parcourrir les grosse table, donc à mon avis la première méthode est moins couteuse sauf si tout tes tests arrivent à passer par des indexs, ce qui serais du bol....
Pour optimiser encore je pense qu'il faut faire une combinaison des 2: Code :
|
||
|
|
00
|
|
|
#3 |
|
Membre du Club
![]() Inscription : juin 2003 Messages : 156 ![]() |
Merci.
Pour la clarté du code et sa modularité, j'avoue préférer la solution 1 également. Pourquoi pas combiner si possible, mais pas évident néanmoins... D'ailleurs, selon vous, l'opportunité de l'une ou l'autre méthode peut-elle dépendre de la taille de la table ou pas ? D'autres avis ? Merci. |
|
|
00
|
|
|
#4 |
![]() ![]() Inscription : janvier 2004 Messages : 15 861 ![]() |
Je serais bien moins catégorique que mes collégues
Cela dépend de la structure de la table, de la quantité de données sélectionnées et du controle. La table est-elle partitionnée, volumineuse et indexée ? Les contrôles sont-ils complexes ? Est ce que la sélection porte sur toute la table ? |
|
|
00
|
|
|
#5 |
|
Membre du Club
![]() Inscription : juin 2003 Messages : 156 ![]() |
Je vais tenter de répondre.
Cette table est issue d'un fichier, donc fabriquée à l'aide du *Loader. A priori, elle ne comporte pas d'index et il serait délicat d'en trouver de judicieux je crois. Elle n'est pas partitionnée. Toutes ses lignes doivent être contrôlées. Parmi les contrôles il y a un peu de tout. Du plus simple (format, présence) au moyen (présence de la valeur dans une table de référentiel) au complexe (croisé entre valeurs). Frédéric. |
|
|
00
|
|
|
#6 | ||
|
Membre éclairé
![]() Inscription : avril 2006 Messages : 465 ![]() |
Citation:
Plutot que de selectionner les infos qui correspondent à un critère donnée, puis celle qui correspondent à un autre critère etc. Puisque que au mieux tu liras toute la table mais en passant par des indexes (que tu n'as pas) ce qui est plus couteux que de lire toute la table directement et au pire tu liras toute la table autant de fois que tu as de controle puisque qu'il n'y a pas d'index Citation:
|
||
|
|
00
|
|
|
#7 |
|
Membre émérite
![]() Inscription : janvier 2004 Messages : 845 ![]() |
bonjour,
suivant la taille de la table, il serait judicieux de charger la table dans un tableau via un bulk collect, puis de faire les contrôle par itération sur le tableau... le bénéfice sera de laisser la table disponible pour les opérations de corrections déclenchées par les contrôles effectués... mais par contre le contrôle lui-même peut être un poil plus lourd à coder... mais je pense qu'en terme de perf ce serait intéressant !
__________________
Il est plus facile de voir les signes avant-coureurs après coup que l'inverse ! Yorglaa |
|
|
00
|
|
|
#8 |
|
Membre du Club
![]() Inscription : juin 2003 Messages : 156 ![]() |
Réponses extrêmement intéressantes, merci.
Tout concourt vers la solution 1/ ce qui me soulage un peu car c'était ma préférée. Mais mes collègues ici me poussaient vers l'autre. Avoir des avis dans mon sens me conforte donc Pour l'utilisation des bulk collect, oui c'est aussi une bonne idée. Il faut que je vois comment je vais gérer les erreurs aussi. Je vais intégrer ça dans une réflexion globale. Merci |
|
|
00
|
Copyright © 2000-2012 - www.developpez.com