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) :
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)
       )
Si on regarde le plan d'exécution utilisé, on voit qu'oracle utilise l'index "RECIDX" qui possède les 2 champs suivant :
- 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.