Oracle 数据库索引

对单个字段建立了索引以外,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
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值