CBN: optimisation des performances (V10.10)
Voici comment bénéficier de meilleures performances sur les calculs de besoins (CBN) afin de gagner en productivité.
Notamment dans le cas d’utilisation avec l’affaire industrielle et des nouvelles origines de besoins d’affaire
Fonctionnement
Le constat est que :
Le CBN peut prendre jusqu'à 12 heures avec un portefeuille important de besoins d’affaire:
Recherche des pistes d’amélioration pour la performances :
Génération des propositions OF : en mode processus , on ne peut pas utiliser le dialogue inter-tâche mais il n’y a qu’un appel de tunnel par niveau
Limiter le nombre d’articles traités : le filtre actuel semble suffisant
On garde les articlesvalide
géré en stock
Nature fabriqué pour les OF
Fiche réappro avec mode réapprovisionnement <> aucun
Optimisations Record Sql
Définitions nouveaux indexs : finalement la piste la plus efficace qui permet de réduire, dans un cas réel d’exploitation, de 12:00 à moins de 4:00 le temps du CBN
Précisions techniques
Désactiver le dialogue inter-tâche si appel par processus via une ouverture dédiée :
Optimiser les clauses WHERE :
Equal_Art_ProdNat1('2') à remplacer par clause 'Article_EstFabrique'
BA_ProdTyp_Sup(1) à remplacer par clause not 'Production_AlaCommande'
Diff_Art_ProdNat1('2') à remplacer par clause 'Not_Article_EstFabrique'
Optimiser les jointures :
Ajout ARTIND dans
SREFREAPPRO
<Join NAME="BACbn" ColumnNames="Ba_SubstCbnMode1" NoActivate NoCheck> ;jointure incomplète (correspond pas à un index) car n'a pas les SREF pour mettre dedans
BA as BACbn
ON BACbn.Dos = SART.Dos and BACbn.Ref = SART.Ref and BACbn.CE2 = '1' and BACbn.NIVFICT <> 2 And BACbn.BESCOD = 2
Optimiser les sous-requêtes :
Ajout ARTIND dans
SREFREAPPRO et SREFDECOMPO
;sous-requête d'existance pour les production induites
Case BNORI_SubQuery3(int cbnNoCourant, char prodnat1)
Exists ( SELECT BNORI.BNORI_ID FROM $DAV.BNORI LEFT JOIN $DAV.ART ON ART.DOS=BNORI.DOS AND ART.REF = BNORI.REF WHERE
Left(ART.ProdNat,1) = prodnat1 and
BNORI.CBNNO = cbnNoCourant AND BNORI.DOS = SART.DOS AND BNORI.Ref = SART.Ref)
Activer les caches Objet métier :
T062, T017,..
Création nouveaux indexs :