Bonjour,
Je viens vers vous car nous avons un problème entre Oracle et notre ERP. Nous sommes en cours de migration de Axapta V3.0 à Dynamics AX 2009. Nous étions sous Oracle et nous n'avions aucun soucis mais là nous sommes face à un problème étrange.
Il semblerait qu'Oracle n'utilise pas le bon plan d'éxécution lorsqu'il reçoit une requête en provenance d'AX.
Voici, par exemple, une requête exécutée par l'ERP (capturée via Toad) :
Si on regarde le plan d'exécution utilisé, on voit qu'oracle utilise l'index "RECIDX" qui possède les 2 champs suivant :
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8 SELECT /*+ FIRST_ROWS */ a.recid FROM docuref a WHERE ( ( (SUBSTR (NLS_LOWER (refcompanyid), 1, 4) = NLS_LOWER (:in1)) AND (reftableid = :in2) ) AND (refrecid = :in3) )
- SUBSTR (NLS_LOWER (refcompanyid), 1, 4)
- RecId
Si on copie la requête dans le navigateur Toad et qu'on regarde le plan d'exécution, il est différent et utilise l'index "REFIDX" qui possède les champs suivant :
- SUBSTR (NLS_LOWER (refcompanyid), 1, 4)
- RefTableId
- RefRecId
- CreatedDateTim
- SUBSTR (NLS_LOWER ("CreatedBy"), 1, 5)
La deuxième solution est clairement meilleur et incomparable en terme de temps de réponse.
Quelqu'un aurait-il une idée ? un retour d'expérience sur Dynamics AX ?
Merci.
Partager