12
返回列表 发新帖
楼主: liujiannan047

[讨论] 使用order by排序时Oracle的排序算法是非稳定的排序算法吗?

[复制链接]
论坛徽章:
47
蒙奇·D·路飞
日期:2017-03-27 08:04:23马上有车
日期:2014-02-18 16:41:112014年新春福章
日期:2014-02-18 16:41:11一汽
日期:2013-09-01 20:46:27复活蛋
日期:2013-03-13 07:55:232013年新春福章
日期:2013-02-25 14:51:24ITPUB 11周年纪念徽章
日期:2012-10-09 18:03:322012新春纪念徽章
日期:2012-02-13 15:13:202012新春纪念徽章
日期:2012-02-13 15:13:202012新春纪念徽章
日期:2012-02-13 15:13:20
11#
发表于 2010-8-26 03:06 | 只看该作者
liujiannan047,

You should always tell us Oracle version.

Can you try your test after you set the following parameter, if you're using 10gR2 or newer?

alter session set "_newsort_enabled" = false;

Please read
http://jonathanlewis.wordpress.com/2007/06/03/sorting/

Yong Huang

[ 本帖最后由 Yong Huang 于 2010-8-25 13:08 编辑 ]

使用道具 举报

回复
论坛徽章:
1
2010新春纪念徽章
日期:2010-03-01 11:19:07
12#
 楼主| 发表于 2010-8-27 18:16 | 只看该作者
原帖由 Yong Huang 于 2010-8-26 03:06 发表
liujiannan047,

You should always tell us Oracle version.

Can you try your test after you set the following parameter, if you're using 10gR2 or newer?

alter session set "_newsort_enabled" = false;

Please read
http://jonathanlewis.wordpress.com/2007/06/03/sorting/

Yong Huang


首先感谢Yong Huang告诉了我Oracle排序算法随着版本在不断改进。我试着用你给出的方法又做了一次,不过结果没有改变:
ETL@RACTEST> select a,b,rowid from ttt1;

A           B ROWID
-- ---------- ------------------
a           1 AAE39tAAJAAACg1AAA
b           1 AAE39tAAJAAACg1AAB
c           1 AAE39tAAJAAACg1AAC
d           1 AAE39tAAJAAACg1AAD

Elapsed: 00:00:00.02
ETL@RACTEST> select a,b,rowid from ttt1 order by b;

A           B ROWID
-- ---------- ------------------
a           1 AAE39tAAJAAACg1AAA
d           1 AAE39tAAJAAACg1AAD
c           1 AAE39tAAJAAACg1AAC
b           1 AAE39tAAJAAACg1AAB

Elapsed: 00:00:00.01
ETL@RACTEST> alter session set "_newsort_enabled" = false;

Session altered.

Elapsed: 00:00:00.00
ETL@RACTEST> select a,b,rowid from ttt1 order by b;

A           B ROWID
-- ---------- ------------------
a           1 AAE39tAAJAAACg1AAA
d           1 AAE39tAAJAAACg1AAD
c           1 AAE39tAAJAAACg1AAC
b           1 AAE39tAAJAAACg1AAB

Elapsed: 00:00:00.00
ETL@RACTEST> alter session set "_newsort_enabled" = true;

Session altered.

Elapsed: 00:00:00.01
ETL@RACTEST> select a,b,rowid from ttt1 order by b;

A           B ROWID
-- ---------- ------------------
a           1 AAE39tAAJAAACg1AAA
d           1 AAE39tAAJAAACg1AAD
c           1 AAE39tAAJAAACg1AAC
b           1 AAE39tAAJAAACg1AAB

Elapsed: 00:00:00.00




以下是版本信息:
ETL@RACTEST> select * from v$version;

BANNER
----------------------------------------------------------------
Oracle Database 10g Enterprise Edition Release 10.2.0.1.0 - Prod
PL/SQL Release 10.2.0.1.0 - Production
CORE    10.2.0.1.0      Production
TNS for Solaris: Version 10.2.0.1.0 - Production
NLSRTL Version 10.2.0.1.0 - Production

使用道具 举报

回复

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

本版积分规则 发表回复

TOP技术积分榜 社区积分榜 徽章 团队 统计 知识索引树 积分竞拍 文本模式 帮助
  ITPUB首页 | ITPUB论坛 | 数据库技术 | 企业信息化 | 开发技术 | 微软技术 | 软件工程与项目管理 | IBM技术园地 | 行业纵向讨论 | IT招聘 | IT文档
  ChinaUnix | ChinaUnix博客 | ChinaUnix论坛
CopyRight 1999-2011 itpub.net All Right Reserved. 北京盛拓优讯信息技术有限公司版权所有 联系我们 未成年人举报专区 
京ICP备16024965号-8  北京市公安局海淀分局网监中心备案编号:11010802021510 广播电视节目制作经营许可证:编号(京)字第1149号
  
快速回复 返回顶部 返回列表