我需要较少的执行时间来获得所需的结果。 我有一个包含许多行(超过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秒):
Select * from cps_case_history where (dbms_lob.instr(notes, 'ACCOUNT
TFR TO UFSS') > 1)
Select * from cps_case_history where notes like '%ACCOUNT TFR TO
UFSS%'
请与我们分享确切的查询,这将花费更少的时间来执行。
答案 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_date
列Partitioning