【问题标题】:Select query taking much time to execute - query optimisation选择查询需要很长时间执行 - 查询优化
【发布时间】:2023-03-12 22:56:01
【问题描述】:

我有一个名为 cps_case_history 的表,其中有一列名为 'Notes' 的数据类型为 Varchar2 (1800 Char)

我需要从 cps_case_history 表中获取 10 到 15 条记录,其中 Notes like 'ACCOUNT TFR TO UFSS'

我使用了以下两个查询,但执行时间太长,谁能建议一种优化以下查询的方法,以便我可以快速获取 10 或 15 条记录

第一个查询:

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%'

提前致谢。

【问题讨论】:

  • Oracle(plsql) 还是 sql-server??.. 好像是 Oracle
  • 您为什么在varchar2 列上使用dbms_lob?第二个查询似乎很好。需要多长时间?您在Notes 列上有任何索引吗?
  • 我没有为该列定义任何索引。当我尝试长时间(以小时为单位)执行它而没有任何响应时..有什么解决方案

标签: sql oracle query-optimization


【解决方案1】:

顾名思义,它是历史表 cps_case_history。所以这张表可能包含大量数据。为了快速获得查询结果,这个表应该有分区或索引。

【讨论】:

  • 是的,它的历史表有着巨大的记录。但表没有任何分区或索引.. 有什么办法可以得到 10 到 15 条记录
【解决方案2】:

如果您想要该表中的任何 10-15 条记录,您可以使用 TOP

select Top 15 * from cps_case_history 
         where notes like '%ACCOUNT TFR TO UFSS%' ;     

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2018-12-07
    • 2018-07-06
    • 1970-01-01
    • 2019-07-27
    • 1970-01-01
    • 2016-04-22
    相关资源
    最近更新 更多