哪个最适合在oracle Query A中使用,如Oracle

时间:2017-11-23 09:13:45

标签: sql oracle sql-like query-performance

我处于困惑中,发现哪些会改善查询执行时间。 数据库和表信息: 我正在使用托管在远程位置的数据库可能是美国。 表约有2 cr。记录并且只有2列字符串格式。 我想使用过滤器和一些修改从该表中提取数据。  在select语句中。 DB_KEY具有唯一的密钥索引

选择陈述条件:

CASE WHEN  (INSTR(DB_KEY  , 'MsgOutMdlName' ) > 0) THEN 
    reverse(SUBSTR( reverse(DB_KEY) ,  INSTR (reverse(DB_KEY)  , '|' , 1 ) ,LENGTH(DB_KEY) )) || 'MsgOutMdlName' ELSE
    reverse(SUBSTR( reverse(DB_KEY) ,  INSTR (reverse(DB_KEY)  , '|' , 1 ) ,LENGTH(DB_KEY) )) || 'MsgInAttName'

或者

CASE WHEN  INSTR(DB_KEY  , 'MsgOutMdlName' ) > 0 THEN 
    SUBSTR( DB_KEY , 0, INSTR(DB_KEY , '|' , 1, REGEXP_COUNT (DB_KEY, '[^|]+')-1 ) ) || 'MsgOutMdlName' ELSE
    SUBSTR( DB_KEY , 0, INSTR(DB_KEY , '|' , 1, REGEXP_COUNT (DB_KEY, '[^|]+')-1 ) ) || 'MsgInAttName' end

或者

CASE WHEN  DB_KEY like '%MsgOutMdlName'

然后上面的代码中的任何一个:

并在where子句中:

 WHERE 1 = ( case when DB_VALUE is not null and 
 (DB_KEY LIKE 'TP|%MsgInAttName' or DB_KEY LIKE 'TP|%MsgOutMdlName') then 1 else null end  )

或者在where子句中使用like运算符。

请建议我最好的方法。 DB_key具有动态数据值。

我已经使用了基于函数的索引,但没有获得更好的性能。

0 个答案:

没有答案