J'ai quelques problèmes avec l'utilisation correcte des index dans Oracle 11Gr2 et j'essaie de mieux comprendre comment mon plan d'explication est lié à ma requête afin de pouvoir appliquer l'indexation correctement. Lors de l'exécution de la requête suivante :
SELECT JLOG1.JLOG_KEY,
JLOG1.SRC_CD,
JLOG1.JRNL_AMT,
CASD.CONT_NO,
SUM (NVL (VJLOG.TDTL_AMT, 0)) TDTL_SUM
FROM GL_Journal_Logs JLOG1,
GL_JLOG_Details VJLOG,
CASE_DATA CASD
WHERE VJLOG.JLOG_KEY(+) = JLOG1.JLOG_KEY
AND CASD.CASE_KEY(+) = JLOG1.CASE_KEY
AND JLOG1.JRNL_CD = '0'
AND JLOG1.SRC_CD = '2'
AND JLOG1.ACCT_IF_CD = '0'
GROUP BY JLOG1.JLOG_KEY, JLOG1.SRC_CD,JLOG1.JRNL_AMT, CASD.CONT_NO
HAVING JLOG1.JRNL_AMT <> SUM (NVL (VJLOG.TDTL_AMT, 0));
J'obtiens les détails d'explication suivants :
Je peux comprendre que les index sur mes " clés " de jointure (JLOG_KEY ou CASE_KEY) ne s'appliqueraient pas nécessairement puisqu'il s'agit d'une jointure externe (ou devraient-ils le faire ?), mais lorsque je crée des index sur JLOG1 (JRNL_CD, SRC_CD, ACCT_IF_CD), techniquement, ceux-ci prendraient-ils effet étant donné ma clause " where " ?
Dois-je créer des index dans ces circonstances ou existe-t-il une meilleure façon de procéder ?