一张几万数据的表,对其按某字段进行了一下排序,查询之,一分钟出结果。但是,想取其前10条数据时,在外层加了where rownum<=10,结果2小时后依然在查询中!各位有什么见解都说一说吧,谢了。
select *
from (select t.SHEET_NO, t.IF_ASK_AGAIN, t.ORGID, t.OCCUR_TIME
from pre_entry_all_view t
where t.IF_ASK_AGAIN > 0
and t.ORGID = 42
and t.OCCUR_TIME between
to_date('2013-04-01 00:00:00', 'yyyy-mm-dd hh24:mi:ss') and
to_date('2013-04-30 23:59:59', 'yyyy-mm-dd hh24:mi:ss')
order by t.IF_ASK_AGAIN desc)
where rownum <= 10
SQL oracle
------解决方案--------------------
虽然我不怎么懂优化,但我晓得 给出执行计划 比给出sql 更有意义
------解决方案--------------------
不可能呀 取前10条 查询效率应该低于查询全部的时间
改成where rownum < 11试试
------解决方案--------------------
优化器模式是first_rows 还是 all_rows ?