日期:2014-05-17  浏览次数:20928 次

怎样让order by提高查询速度--oracle?
先看一条SQL语句吧!
select dra.rationaccid from dms_rationacc dra,dms_bill_type dbt
where dra.typeid = dbt.typeid
order by dra.accdate desc
我现在就是想要提升这句SQL的速度,并且也有一点不明白,如果我不加order by的话在dms_rationacc,dms_bill_type中各有100万条数据查询速度在0.03秒左右,但是如果我加了order by的话时间就是11秒左右,现在做压力测试肯定过不了.
如果在dms_rationacc这个表中的typeid和dms_bill_type这表中typeid各建一个唯一索引的话时间是6秒左右,但是现在dms_rationacc表中的typeid是肯定会重复的,不知道现在该怎么办了,我在dra.accdate字段上也加了索引,但是根本没什么效果.
希望可以得到大家的帮助,谢谢!

------解决方案--------------------
order by是将查到的数据进行排序..这个快不了
------解决方案--------------------
Order by提速,与索引关系不大。
因为order by 是对查询结果的排序,添加索引只能优化产生检索结果这个步骤,后面Order by的速度并不能够提高。
如果速度难以忍受,应该考虑对排序区扩容。
扩大sort_area_size的大小。