Oracle SQL查询按照字段排序后性能下降

sterrys 2012-02-23 03:28:01
如下为在PL/SQL中的测试结果

一个查询语句
select * from web_data where devicecode=211011648
执行的时间是0.078s,
而加了排序之后
select * from web_data where devicecode=211011648 order by dataid asc
执行的时间是6.329s

其中dataid是主键,devicecode与dataid都是number类型,且在这两个字段上都加了索引

整个web_data表的记录数是1640542,
满足条件devicecode=211011648的记录数是5443,

请教高人指点如何才能提升排序的性能?


...全文
328 7 打赏 收藏 转发到动态 举报
写回复
用AI写文章
7 条回复
切换为时间正序
请发表友善的回复…
发表回复
sterrys 2012-02-27
  • 打赏
  • 举报
回复
后来发现devicecode更改为varchar2型之后查询速度上来了
Namana 2012-02-23
  • 打赏
  • 举报
回复
不然分成两层些,先查再排,试试。
select * from(select * from web_data where devicecode=211011648 ) order by dataid asc

或者修改建在dataid上的索引,指定按照升序。
  • 打赏
  • 举报
回复
要排序的话 sql语句只能做到这个程度了 只有从其他角度出发
mingchaoyan 2012-02-23
  • 打赏
  • 举报
回复
这个设计调优了
内存中有个排序区, sort_area_size 调调试试
sterrys 2012-02-23
  • 打赏
  • 举报
回复
不排序,数据看起来会很乱
dawugui 2012-02-23
  • 打赏
  • 举报
回复
既然要排序,就需要时间,所以耗时长.
dzsdzb 2012-02-23
  • 打赏
  • 举报
回复
xiexie

3,491

社区成员

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

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