怎样让order by提高查询速度--oracle?

debug2 2008-01-16 05:41:52
先看一条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字段上也加了索引,但是根本没什么效果.
希望可以得到大家的帮助,谢谢!
...全文
1267 10 打赏 收藏 转发到动态 举报
写回复
用AI写文章
10 条回复
切换为时间正序
请发表友善的回复…
发表回复
画画有益 2010-02-03
  • 打赏
  • 举报
回复
建个位图索引可以提高速度
doer_ljy 2008-02-22
  • 打赏
  • 举报
回复
Order by提速,与索引关系不大。
因为order by 是对查询结果的排序,添加索引只能优化产生检索结果这个步骤,后面Order by的速度并不能够提高。
如果速度难以忍受,应该考虑对排序区扩容。
扩大sort_area_size的大小。
codearts 2008-02-22
  • 打赏
  • 举报
回复
dms_rationacc(typeid, accdate)这样建索引后,执行计划是怎么样子的?
我是杨威利 2008-02-22
  • 打赏
  • 举报
回复
mark
xiaodong_1567 2008-01-17
  • 打赏
  • 举报
回复
dra.accdate
加个降序索引试试
fenny007 2008-01-17
  • 打赏
  • 举报
回复
order by是将查到的数据进行排序..这个快不了
shizhu820228 2008-01-17
  • 打赏
  • 举报
回复
mark
debug2 2008-01-17
  • 打赏
  • 举报
回复
To wffffc:
你这样写就是改变了我的查询条件,就算是用子查询的话也不会提高速度的,子查询的速度会更慢的.

To WangZWang:
按照你的方法添加复合索引没什么效果,速度也提不起来.
但是不管怎么样还是谢谢两位的跟帖了.

希望大家可以帮帮偶!
WangZWang 2008-01-16
  • 打赏
  • 举报
回复
建立复合索引dms_rationacc(typeid,accdate)
聚集索引 dms_bill_type(typeid)
wffffc 2008-01-16
  • 打赏
  • 举报
回复
select dra.rationaccid from dms_rationacc dra
where dra.typeid in (select dbt.typeid from dms_bill_type dbt )
order by dra.accdate desc
这样试试

17,086

社区成员

发帖
与我相关
我的任务
社区描述
Oracle开发相关技术讨论
社区管理员
  • 开发
  • Lucifer三思而后行
  • 卖水果的net
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

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