oracle中order by 速度问题?

[复制链接]
查看11 | 回复9 | 2012-8-2 22:43:00 | 显示全部楼层 |阅读模式
1. select a,b,c from tablea where a =‘2’ order by b desc
先查询还是先排序?
2 现在表中有几百万条数据,使用上面的语句查询非常慢(结果只有2条),去掉排序速度快了很多(字段是索引的一部分)。为什么?
如果大家说是 后排序,为什么查询结果就2条 排序还会那么影响时间,应该对2条排序不应该呀。

回复

使用道具 举报

千问 | 2012-8-2 22:43:00 | 显示全部楼层
此类问题最好准备好执行计划
回复

使用道具 举报

千问 | 2012-8-2 22:43:00 | 显示全部楼层
那就用rownum固定子查询
回复

使用道具 举报

千问 | 2012-8-2 22:43:00 | 显示全部楼层
这不就是你这个帖里的问题么? http://www.itpub.net/thread-1762684-1-2.html
你数据库什么版本的?两次查询之间清缓存了没有?
回复

使用道具 举报

千问 | 2012-8-2 22:43:00 | 显示全部楼层
udfrog 发表于 2013-2-5 16:42
此类问题最好准备好执行计划

执行计划没什么 就一个全表扫描 我就想知道 order by 是对结果排序吗?如果是结果就2条 为什么那么消耗时间
回复

使用道具 举报

千问 | 2012-8-2 22:43:00 | 显示全部楼层
lastwinner 发表于 2013-2-6 00:57
这不就是你这个帖里的问题么? http://www.itpub.net/thread-1762684-1-2.html
你数据库什么版本的?两次查 ...

我就想知道 order by 是对结果排序吗?如果是结果就2条 为什么那么消耗时间
回复

使用道具 举报

千问 | 2012-8-2 22:43:00 | 显示全部楼层
〇〇 发表于 2013-2-5 16:45
那就用rownum固定子查询

请指教
回复

使用道具 举报

千问 | 2012-8-2 22:43:00 | 显示全部楼层
select * from (select rownum rn, a.* from a)order by x
回复

使用道具 举报

千问 | 2012-8-2 22:43:00 | 显示全部楼层
现在表中有几百万条数据,使用上面的语句查询非常慢(结果只有2条)
a字段要有索引啊,另外直方图也要有,必须计划走索引才可以
回复

使用道具 举报

千问 | 2012-8-2 22:43:00 | 显示全部楼层
oracle_metalink 发表于 2013-2-6 08:55
我就想知道 order by 是对结果排序吗?如果是结果就2条 为什么那么消耗时间

是的,order by是一条sql中最后执行的部分
回复

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

主题

0

回帖

4882万

积分

论坛元老

Rank: 8Rank: 8

积分
48824836
热门排行