热门标签 | HotTags
当前位置:  开发笔记 > 编程语言 > 正文

Oracleorderby排序优化

orderby排序对性能的影响-***********************************案例演示-***********************************altersyste

order by 排序对性能的影响 -*********************************** 案例演示 -*********************************** alter syste

Linux公社

首页 → 数据库技术

背景:

阅读新闻

Oracle order by 排序优化

[日期:2013-06-26] 来源:Linux社区 作者:ocpyang [字体:]

order by 排序对性能的影响

-***********************************

案例演示

-***********************************

alter system flush shared_pool;

set autotrace traceonly explain stat;

select * from t3 where sid>90 ;

执行计划

----------------------------------------------------------

Plan hash value: 4161002650

--------------------------------------------------------------------------

| Id | Operation | Name | Rows | Bytes | Cost (%CPU)| Time |

--------------------------------------------------------------------------

| 0 | SELECT STATEMENT | | 10 | 330 | 2 (0)| 00:00:01 |

|* 1 | TABLE ACCESS FULL| T3 | 10 | 330 | 2 (0)| 00:00:01 |

--------------------------------------------------------------------------

Predicate Information (identified by operation id):

---------------------------------------------------

1 - filter("SID">90)

Note

-----

- dynamic sampling used for this statement (level=2)

统计信息

----------------------------------------------------------

10 recursive calls

4 db block gets

10 consistent gets

0 physical reads

496 redo size

818 bytes sent via SQL*Net to client

519 bytes received via SQL*Net from client

2 SQL*Net roundtrips to/from client

0 sorts (memory)

0 sorts (disk)

10 rows processed

select * from t3 where sid>90 order by sid desc;

执行计划

----------------------------------------------------------

Plan hash value: 1749037557

---------------------------------------------------------------------------

| Id | Operation | Name | Rows | Bytes | Cost (%CPU)| Time |

---------------------------------------------------------------------------

| 0 | SELECT STATEMENT | | 10 | 330 | 3 (34)| 00:00:01 |

| 1 | SORT ORDER BY | | 10 | 330 | 3 (34)| 00:00:01 |

|* 2 | TABLE ACCESS FULL| T3 | 10 | 330 | 2 (0)| 00:00:01 |

---------------------------------------------------------------------------

Predicate Information (identified by operation id):

---------------------------------------------------

2 - filter("SID">90)

Note

-----

- dynamic sampling used for this statement (level=2)

统计信息

----------------------------------------------------------

9 recursive calls

4 db block gets

9 consistent gets

1 physical reads

540 redo size

818 bytes sent via SQL*Net to client

519 bytes received via SQL*Net from client

2 SQL*Net roundtrips to/from client

1 sorts (memory) --有排序

0 sorts (disk)

10 rows processed

可以看出CPU发生变化,如果排序语句很多的情况下,性能影响更大.

-***********************************

解决办法

-***********************************

create index index_sid on t3(sid desc);

exec dbms_stats.gather_table_stats('SYS','T3',cascade=>TRUE);

select * from t3 where sid>90 order by sid desc;

执行计划

---------------------------------------------------------

lan hash value: 243714934

----------------------------------------------------------------------------------------

Id | Operation | Name | Rows | Bytes | Cost (%CPU)| Time |

----------------------------------------------------------------------------------------

0 | SELECT STATEMENT | | 10 | 140 | 2 (0)| 00:00:01 |

1 | TABLE ACCESS BY INDEX ROWID| T3 | 10 | 140 | 2 (0)| 00:00:01 |

* 2 | INDEX RANGE SCAN | INDEX_SID | 1 | | 1 (0)| 00:00:01 |

----------------------------------------------------------------------------------------

redicate Information (identified by operation id):

--------------------------------------------------

2 - access(SYS_OP_DESCEND("SID")

filter(SYS_OP_UNDESCEND(SYS_OP_DESCEND("SID"))>90)

ote

----

- SQL plan baseline "SQL_PLAN_78qgapzz4mwhwd7223dec" used for this statement

统计信息

---------------------------------------------------------

0 recursive calls

0 db block gets

4 consistent gets

0 physical reads

0 redo size

818 bytes sent via SQL*Net to client

519 bytes received via SQL*Net from client

2 SQL*Net roundtrips to/from client

0 sorts (memory) --无排序

0 sorts (disk)

10 rows processed

  • 0
  • 初始化Oracle用户以及表空间的bash shell脚本

    IMP/EXP数据迁移(二)

    相关资讯 Oracle排序 oracle order by

    推荐阅读
    • 本文介绍了Oracle数据库中tnsnames.ora文件的作用和配置方法。tnsnames.ora文件在数据库启动过程中会被读取,用于解析LOCAL_LISTENER,并且与侦听无关。文章还提供了配置LOCAL_LISTENER和1522端口的示例,并展示了listener.ora文件的内容。 ... [详细]
    • 在Docker中,将主机目录挂载到容器中作为volume使用时,常常会遇到文件权限问题。这是因为容器内外的UID不同所导致的。本文介绍了解决这个问题的方法,包括使用gosu和suexec工具以及在Dockerfile中配置volume的权限。通过这些方法,可以避免在使用Docker时出现无写权限的情况。 ... [详细]
    • Python语法上的区别及注意事项
      本文介绍了Python2x和Python3x在语法上的区别,包括print语句的变化、除法运算结果的不同、raw_input函数的替代、class写法的变化等。同时还介绍了Python脚本的解释程序的指定方法,以及在不同版本的Python中如何执行脚本。对于想要学习Python的人来说,本文提供了一些注意事项和技巧。 ... [详细]
    • 本文讨论了在数据库打开和关闭状态下,重新命名或移动数据文件和日志文件的情况。针对性能和维护原因,需要将数据库文件移动到不同的磁盘上或重新分配到新的磁盘上的情况,以及在操作系统级别移动或重命名数据文件但未在数据库层进行重命名导致报错的情况。通过三个方面进行讨论。 ... [详细]
    • 成功安装Sabayon Linux在thinkpad X60上的经验分享
      本文分享了作者在国庆期间在thinkpad X60上成功安装Sabayon Linux的经验。通过修改CHOST和执行emerge命令,作者顺利完成了安装过程。Sabayon Linux是一个基于Gentoo Linux的发行版,可以将电脑快速转变为一个功能强大的系统。除了作为一个live DVD使用外,Sabayon Linux还可以被安装在硬盘上,方便用户使用。 ... [详细]
    • 本文介绍了Linux Shell中括号和整数扩展的使用方法,包括命令组、命令替换、初始化数组以及算术表达式和逻辑判断的相关内容。括号中的命令将会在新开的子shell中顺序执行,括号中的变量不能被脚本余下的部分使用。命令替换可以用于将命令的标准输出作为另一个命令的输入。括号中的运算符和表达式符合C语言运算规则,可以用在整数扩展中进行算术计算和逻辑判断。 ... [详细]
    • 在Kubernetes上部署JupyterHub的步骤和实验依赖
      本文介绍了在Kubernetes上部署JupyterHub的步骤和实验所需的依赖,包括安装Docker和K8s,使用kubeadm进行安装,以及更新下载的镜像等。 ... [详细]
    • 本文介绍了Hyperledger Fabric外部链码构建与运行的相关知识,包括在Hyperledger Fabric 2.0版本之前链码构建和运行的困难性,外部构建模式的实现原理以及外部构建和运行API的使用方法。通过本文的介绍,读者可以了解到如何利用外部构建和运行的方式来实现链码的构建和运行,并且不再受限于特定的语言和部署环境。 ... [详细]
    • 本文介绍了在Mac上配置环境变量,实现Python3的命令行调用的步骤。首先通过官网下载或使用brew安装Python3,并找到安装路径。然后将该路径添加到环境变量中,可以通过编辑.bash_profile文件或执行source命令来实现。配置完成后,即可在命令行中直接调用Python3。 ... [详细]
    • 高质量SQL书写的30条建议
      本文提供了30条关于优化SQL的建议,包括避免使用select *,使用具体字段,以及使用limit 1等。这些建议是基于实际开发经验总结出来的,旨在帮助读者优化SQL查询。 ... [详细]
    • 本文介绍了通过mysql命令查看mysql的安装路径的方法,提供了相应的sql语句,并希望对读者有参考价值。 ... [详细]
    • ALTERTABLE通过更改、添加、除去列和约束,或者通过启用或禁用约束和触发器来更改表的定义。语法ALTERTABLEtable{[ALTERCOLUMNcolu ... [详细]
    • 如何在php中将mysql查询结果赋值给变量
      本文介绍了在php中将mysql查询结果赋值给变量的方法,包括从mysql表中查询count(学号)并赋值给一个变量,以及如何将sql中查询单条结果赋值给php页面的一个变量。同时还讨论了php调用mysql查询结果到变量的方法,并提供了示例代码。 ... [详细]
    • Oracle seg,V$TEMPSEG_USAGE与Oracle排序的关系及使用方法
      本文介绍了Oracle seg,V$TEMPSEG_USAGE与Oracle排序之间的关系,V$TEMPSEG_USAGE是V_$SORT_USAGE的同义词,通过查询dba_objects和dba_synonyms视图可以了解到它们的详细信息。同时,还探讨了V$TEMPSEG_USAGE的使用方法。 ... [详细]
    • 在使用dedecms过程中,添加自定义字段变量很有用,但删除并不容易。本文介绍了两种常用的删除方法:执行SQL语句和手动SQL删除。 ... [详细]
    author-avatar
    LaravelChen
    这个家伙很懒,什么也没留下!
    PHP1.CN | 中国最专业的PHP中文社区 | DevBox开发工具箱 | json解析格式化 |PHP资讯 | PHP教程 | 数据库技术 | 服务器技术 | 前端开发技术 | PHP框架 | 开发工具 | 在线工具
    Copyright © 1998 - 2020 PHP1.CN. All Rights Reserved | 京公网安备 11010802041100号 | 京ICP备19059560号-4 | PHP1.CN 第一PHP社区 版权所有