因此,我在 Oracle 11Gr2 中正确/任何使用索引时遇到了一些问题,我试图更好地了解我的解释计划如何与我的查询相关联,以便我可以正确应用索引。运行以下查询时:
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));
我得到以下解释细节:
我可以理解,我的联接“键”(JLOG_KEY 或 CASE_KEY)上的索引不一定适用,因为它是外部联接(或者应该是?),但是在 JLOG1(JRNL_CD、SRC_CD、ACCT_IF_CD)上创建索引时,技术上考虑到我的“where”条款,这些会生效吗?
鉴于这种情况,我应该创建任何索引还是有更好的方法?