Oracle 200多万条数据 查询优化解决方案
一个检索功能,根据条件查询出来180万条数据 ,按索引列排序 , 很慢。 求解决方案啊 。
select rownum as rowno, t.myid,t.searchorg,t.title,t.abstract,t.author,t.publication_date_time,t.syear,t.ibz,t.subject,t.surl
from kjbg_ysdata t
where ( contains(TITLE , 'the')>0 or contains(ABSTRACT , 'the')>0 or contains(Subject , 'the')>0 )
order by t.myid ;
不加order by 可以秒出. 加order by 几分钟都出不来 .
------解决思路----------------------
总数200多万,这条查询结果180多万?
加个Hint /*+ first_rows(10)*/,并去掉 rownum as rowno试下
------解决思路----------------------
t根据你所说查询180w数据不加order by t.myid的时候秒出的话,查询问题不大,目前的问题就是排序导致的,可以在t.myid上建立索引,在查询完毕后不需要在此排序,提升性能
------解决思路----------------------
oder by前后的执行计划分别贴一下
------解决思路----------------------
不加ORDER BY,把查询结果返回到临时表中,在Myid列上建立索引,查询临时表,返回结果。
这个全文索引和普通索引没办法共用?
------解决思路----------------------
把myid加一个索引试试看。