必需的适当查询以查找结果

时间:2015-07-29 09:18:41

标签: plsql plsqldeveloper

我需要较少的执行时间来获得所需的结果。 我有一个包含许多行(超过100k)的表,在此表中,字段名称为notes varchar2(1800)。 它包含以下值:

notes
CASE Transfer
Surnames        AAA : BBBB  
Case Status     ACCOUNT TXFERRED TO BORROWERS
Completed Date  25/09/2022
Task Group      16
Message sent at 12/10/2012 11:11:21
Sender      : lynxfailures123@google.com
Recipient   : LFRB568767@yahoo.com
Received    : 21:31 12/12/2002

行应返回值(帐户转发给借方)。

我使用了以下查询但执行需要很长时间(72150436秒):

  1. Select * from cps_case_history where (dbms_lob.instr(notes, 'ACCOUNT TFR TO UFSS') > 1)

  2. Select * from cps_case_history where notes like '%ACCOUNT TFR TO UFSS%'

  3. 请与我们分享确切的查询,这将花费更少的时间来执行。

1 个答案:

答案 0 :(得分:1)

您可以尝试并行提示吗? Optimizer hints

Select /*+ PARALLEL(a,8) */ a.* from cps_case_history a
where  INSTR(NOTES,'Text you want to search') > 0;  -- your condition
  

将16替换为16并查看性能是否进一步提高。

%运算符的开头避免使用like  即。where notes like '%Account...'

更新回答:尝试创建分区表。您可以在completed_datePartitioning

上进行范围分区