Oracle排序优化问题,求解决方案
秋雨飘落 2012-10-31 05:37:29 1.一张表内有3亿条数据,该表建立全文索引;
2.现在我以“张三”关键词去检索该表,我只需要前300条数据(rownum<=300),这样Oracle查够300条就不再
往下扫描,速度很快。SQL语句:select * from 表名 contains(text,'张三')>0 where rownum<=300;
3.但实际上张三这个关键词有10000条数据,如果我想先按时间排序(倒序)再取前300条,速度就很慢了,因
为如果有排序操作,Oracle会10000条结果集都检索出后再排序,然后才去取前300条,成本太高了,
SQL语句:select * from (select * from 表名 where contains(text,'张三')>0 order by 生产时间 desc)
where rownum<=300;
4.求解决方案提高检索速度。目的是:检索结果取前300条,但要求记录的生产时间最早的排前面。
5.一定给分。