"SELECT ITM_CD, PT_ITM_NO FROM INS WHERE DVSN_CD = '" + strDVSNCode + 
"' AND REPLACE('" + strPartNo + "' ,'_',',') LIKE REPLACE(REPLACE(INS.PT_ITM_NO,'_',','),'?','_') " +
" AND LGC_DEL_TYP = '0' ORDER BY ITM_CD_TYP_TYP DESCstrDVSNCode, strPartNo是参数
由于PT_ITM_NO中的?可以代表任意字符,所以我使用了LIKE REPLACE(REPLACE(INS.PT_ITM_NO,'_',','),'?','_')我已经创建了索引,可是没有帮助,索引如下:
CREATE INDEX INS_IDX4 ON INS
(DVSN_CD, REPLACE(REPLACE(PT_ITM_NO,'_',','),'?' ,'_' ), LGC_DEL_TYP);

解决方案 »

  1.   

    可以的
    http://www.ss64.com/orasyntax/5indexes.htmlHow Indexes Are SearchedIndex unique scan used when all columns of a unique (B-tree) index are specified with equality conditions.
    e.g.
    name = 'ALEX'Index range scan is used when you specify a wildcard or interval (bounded by a start key and/or end key.)
    e.g.
    name LIKE 'AL%'
    order_id BETWEEN 100 AND 120
    order_book_date > SYSDATE - 30