Oracle 200多万条数据 查询优化

mc_dv 2015-03-26 07:51:41
一个检索功能,根据条件查询出来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 几分钟都出不来 .
...全文
544 9 打赏 收藏 转发到动态 举报
写回复
用AI写文章
9 条回复
切换为时间正序
请发表友善的回复…
发表回复
mc_dv 2015-04-02
  • 打赏
  • 举报
回复
楼上看回复啊, 早说了建了索引 .
AHUA1001 2015-03-31
  • 打赏
  • 举报
回复
把myid加一个索引试试看。
maitianhust 2015-03-31
  • 打赏
  • 举报
回复
不加ORDER BY,把查询结果返回到临时表中,在Myid列上建立索引,查询临时表,返回结果。 这个全文索引和普通索引没办法共用?
辛金龙 2015-03-30
  • 打赏
  • 举报
回复
oder by前后的执行计划分别贴一下
mc_dv 2015-03-30
  • 打赏
  • 举报
回复
顶下 。 求解决方案啊 .
mc_dv 2015-03-27
  • 打赏
  • 举报
回复
引用 3 楼 qq825198125 的回复:
t根据你所说查询180w数据不加order by t.myid的时候秒出的话,查询问题不大,目前的问题就是排序导致的,可以在t.myid上建立索引,在查询完毕后不需要在此排序,提升性能
myid肯定建了索引啊 , 那在哪排序?
子欲养亲不待 2015-03-27
  • 打赏
  • 举报
回复
t根据你所说查询180w数据不加order by t.myid的时候秒出的话,查询问题不大,目前的问题就是排序导致的,可以在t.myid上建立索引,在查询完毕后不需要在此排序,提升性能
mc_dv 2015-03-27
  • 打赏
  • 举报
回复
引用 1 楼 wildwave 的回复:
总数200多万,这条查询结果180多万? 加个Hint /*+ first_rows(10)*/,并去掉 rownum as rowno试下
额 , 取前10行啊 ? 我这需要传两个参数分页了 ..
小灰狼W 2015-03-26
  • 打赏
  • 举报
回复
总数200多万,这条查询结果180多万? 加个Hint /*+ first_rows(10)*/,并去掉 rownum as rowno试下

3,491

社区成员

发帖
与我相关
我的任务
社区描述
Oracle 高级技术相关讨论专区
社区管理员
  • 高级技术社区
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧