选择查询需要很长时间执行 - 查询优化
Posted
技术标签:
【中文标题】选择查询需要很长时间执行 - 查询优化【英文标题】:Select query taking much time to execute - query optimisation 【发布时间】:2015-07-30 08:56:33 【问题描述】:我有一个名为 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
列上有任何索引吗?
我没有为该列定义任何索引。当我尝试长时间(以小时为单位)执行它而没有任何响应时..有什么解决方案
【参考方案1】:
顾名思义,它是历史表 cps_case_history。所以这张表可能包含大量数据。为了快速获得查询结果,这个表应该有分区或索引。
【讨论】:
是的,它的历史表有着巨大的记录。但表没有任何分区或索引.. 有什么办法可以得到 10 到 15 条记录【参考方案2】:如果您想要该表中的任何 10-15 条记录,您可以使用 TOP
select Top 15 * from cps_case_history
where notes like '%ACCOUNT TFR TO UFSS%' ;
【讨论】:
以上是关于选择查询需要很长时间执行 - 查询优化的主要内容,如果未能解决你的问题,请参考以下文章