Bonjour,
L'année dernière, vous avez ajouté la possibilité de supprimer des lignes via une clef avant l'insertion dans le template INTEGRATION Rdbms.tp.proc. J'utilise cette possibilité qui fonctionne très bien mais qui pourrait, je pense, être améliorée en supprimant certaines étapes du template dans certaines conditions.
Actuellement, si je configure l'insertion dans une table comme suit :
Je vais donc :
Générer ma table d'intégration
Supprimer les lignes qui valident ma clef
Créer un index
Vérifier si des lignes doivent être mise à jour
Insérer mes lignes
Supprimer ma table d'intégration
Dans mon cas, les lignes à supprimer sont liées à celles que je vais insérer (je fais un annule et remplace sur cette clef). Je sais donc que je n'aurais pas de mise à jour à faire. 2 étapes sont donc inutiles:
Créer un index
Vérifier si des lignes doivent être mise à jour
D'habitude, on peut ne pas générer de table d'intégration en utilisant le Append mode (il me semble) ce qui fait gagner le temps des 2 étapes ci-dessus et plus encore. Dans le cas d'une utilisation de la fonction de suppression des données, on ne peut pas sinon le template plante car il n'a pas la table source (intégration) pour procéder à la suppression dans la table cible.
J'ai modifié le template en ajoutant un paramètre "justInsert" qui est à false par défaut :
Ce paramètre va permettre lorsqu'on est dans la partie integration du template de suivre le même chemin que le Append Mode et de ne faire que le Insert :
Les performances sont clairement améliorées puisque je ne crée pas d'index inutile et ne test pas les lignes à mettre à jour (je sais qu'il n'y en a aucune). Je sais que je gagnerais un temps non négligeable ce process étant lancé des milliers de fois par jour.
Est-il envisageable que vous fassiez évoluer le template dans ce sens car je pense que cela serait utile à de nombreuse personne .? (Je peux fournir mon template de test).
J'ai essayé de faire la même chose pour la partie update (justUpdate) mais c'est une mauvaise idée, l'index ayant tout son sens pour la mise à jour et la comparaison de donnée. Il est tout de même possible si l'on ajoute un paramètre "justUpdate" de générer la table d'intégration avec le flag à U afin de ne pas faire l'étape "Determination of what could be updated (uk)".
Il est possible que je fasse fausse route, auquel cas, merci de me l'indiquer
.
Cdt,
Benjamin