对单个字段建立了索引以外,where条件过滤的的字段类型也要相同,否则索引会失效
如下面 字段C_PRT_STATE 在表中定义为 vcharacter2 而下面条件 ti.C_PRT_STATE = 'N'
相当于当作字符而非字符串操作 会引起 INTERNAL_FUNCTION 转换.所以只要将该字段修改为
char 型的就可以使作用在该字段上的索引生效
另外字段 没有定义成 NOT NULL 类型的,好像有索引也会生效的?不确定了。
SELECT ti.C_BK_GROUP_ID,ti.C_CNTY_CODE,
ti.C_ORG_UNIT_CODE,ti.C_TRX_REF,ti.C_MAIN_REF,ti.I_EVENT_TIMES,
ti.C_MODULE,ti.C_INFOR_UNIT,ti.C_DOC_INDEX,ti.I_PRT_ROWS_PAGE,
ti.C_MSEND_NAME,ti.C_FSEND_NAME,ti.C_DOC_DESC,ti.C_PRTING_INFO,
ti.C_PEPRTING_INFO,ti.C_PRT_STATE,ti.C_PRT_MODE,
th.C_EVENT_STATE,th.C_EVENT_NAME,th.C_FUNC_ID,th.C_FUNC_NAME,th.C_RELEASE_OP,th.C_LAST_MODI_OP
FROM EXIMTRX.TRX_DOCS_INDX_MGR ti, EXIMTRX.TRX_DOCS_HEADER th
WHERE (ti.C_BK_GROUP_ID = th.C_BK_GROUP_ID
AND ti.C_CNTY_CODE = th.C_CNTY_CODE
AND ti.C_UNIT_CODE = th.C_UNIT_CODE
AND ti.C_TRX_REF = th.C_TRX_REF
AND ti.C_MAIN_REF = th.C_MAIN_REF
AND ti.I_EVENT_TIMES = th.I_EVENT_TIMES
AND ti.C_MODULE = th.C_MODULE)
AND (ti.C_PRT_STATE = 'N'
AND ( (ti.C_PRT_MODE = 'R')
OR (ti.C_PRT_MODE = 'A' AND th.C_EVENT_STATE = 'M')
OR (ti.C_PRT_MODE = 'R' AND th.C_EVENT_STATE = 'P')))
AND (th.D_SYS_REL_DATE >= TO_DATE ('2008-9-2', 'yyyy-MM-dd')
OR th.D_SYS_OP_DATE >= TO_DATE ('2008-9-2', 'yyyy-MM-dd'))
ORDER BY th.D_SYS_OP_DATE
如下面 字段C_PRT_STATE 在表中定义为 vcharacter2 而下面条件 ti.C_PRT_STATE = 'N'
相当于当作字符而非字符串操作 会引起 INTERNAL_FUNCTION 转换.所以只要将该字段修改为
char 型的就可以使作用在该字段上的索引生效
另外字段 没有定义成 NOT NULL 类型的,好像有索引也会生效的?不确定了。
SELECT ti.C_BK_GROUP_ID,ti.C_CNTY_CODE,
ti.C_ORG_UNIT_CODE,ti.C_TRX_REF,ti.C_MAIN_REF,ti.I_EVENT_TIMES,
ti.C_MODULE,ti.C_INFOR_UNIT,ti.C_DOC_INDEX,ti.I_PRT_ROWS_PAGE,
ti.C_MSEND_NAME,ti.C_FSEND_NAME,ti.C_DOC_DESC,ti.C_PRTING_INFO,
ti.C_PEPRTING_INFO,ti.C_PRT_STATE,ti.C_PRT_MODE,
th.C_EVENT_STATE,th.C_EVENT_NAME,th.C_FUNC_ID,th.C_FUNC_NAME,th.C_RELEASE_OP,th.C_LAST_MODI_OP
FROM EXIMTRX.TRX_DOCS_INDX_MGR ti, EXIMTRX.TRX_DOCS_HEADER th
WHERE (ti.C_BK_GROUP_ID = th.C_BK_GROUP_ID
AND ti.C_CNTY_CODE = th.C_CNTY_CODE
AND ti.C_UNIT_CODE = th.C_UNIT_CODE
AND ti.C_TRX_REF = th.C_TRX_REF
AND ti.C_MAIN_REF = th.C_MAIN_REF
AND ti.I_EVENT_TIMES = th.I_EVENT_TIMES
AND ti.C_MODULE = th.C_MODULE)
AND (ti.C_PRT_STATE = 'N'
AND ( (ti.C_PRT_MODE = 'R')
OR (ti.C_PRT_MODE = 'A' AND th.C_EVENT_STATE = 'M')
OR (ti.C_PRT_MODE = 'R' AND th.C_EVENT_STATE = 'P')))
AND (th.D_SYS_REL_DATE >= TO_DATE ('2008-9-2', 'yyyy-MM-dd')
OR th.D_SYS_OP_DATE >= TO_DATE ('2008-9-2', 'yyyy-MM-dd'))
ORDER BY th.D_SYS_OP_DATE