不用order by的排序问题

jinzhijie 2006-09-22 11:10:03
因为效率问题,不能使用order by对结果进行排序,有没有其他方法可以使查询结果按照pk升序排列
...全文
796 12 打赏 收藏 转发到动态 举报
写回复
用AI写文章
12 条回复
切换为时间正序
请发表友善的回复…
发表回复
lyjun_311 2006-09-28
  • 打赏
  • 举报
回复
新建索引不就速度快了吗?
whqcfp 2006-09-26
  • 打赏
  • 举报
回复
有两种情况下,是默认排序的:
第一:Distinct
第二:Group by

如果是以上的两种语句,可以不用排序。
wangzk0206 2006-09-23
  • 打赏
  • 举报
回复
更好的方法好象没有吧 也许是我们孤陋寡闻 反正不是很清楚
ORDER BY 主键应该不会很慢吧
wiler 2006-09-22
  • 打赏
  • 举报
回复
SQL> create table wiler_cs (
2 nnid number(5) not null,
3 nname varchar2(20)
4 );

Table created

SQL> alter table wiler_cs add primary key (nnid);

Table altered

SQL> insert into wiler_cs
2 values(1,'1');

1 row inserted

SQL> insert into wiler_cs
2 values(10,'10');

1 row inserted

SQL> insert into wiler_cs
2 values(9,'9');

1 row inserted

SQL> insert into wiler_cs
2 values(8,'8');

1 row inserted

SQL> insert into wiler_cs
2 values(3,'3');

1 row inserted

SQL> insert into wiler_cs
2 values(5,'5');

1 row inserted

SQL> commit;

Commit complete

SQL> select * from wiler_cs;

NNID NNAME
------ --------------------
1 1
10 10
9 9
8 8
3 3
5 5

6 rows selected

SQL>

以上是测试结果,由测试结果看出,oracle的默认排序是用rowid排序的
wiler 2006-09-22
  • 打赏
  • 举报
回复
大家一起来研究oracle是默认用主键还是用rowid排序
龙翔飞雪 2006-09-22
  • 打赏
  • 举报
回复
建个mview, mview里是排序好的... (甚至可以建多个partition的mview)
Eric_1999 2006-09-22
  • 打赏
  • 举报
回复
你select之前已经在table按pk排序咯。
fuxia 2006-09-22
  • 打赏
  • 举报
回复
没想出办法
majy 2006-09-22
  • 打赏
  • 举报
回复
只要你的数据有可能被更新,那么种种方案恐怕都不可能达到你的要求
hugh_9 2006-09-22
  • 打赏
  • 举报
回复
学习
xiaoxiao1984 2006-09-22
  • 打赏
  • 举报
回复
学习
不是根据rowid排序,而是根据读出的先后顺序排序
谢谢大版
bzszp 2006-09-22
  • 打赏
  • 举报
回复
本质来说不是根据rowid排序,
读的时候是通过数据块顺序的读出的

17,086

社区成员

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

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