Oracle 10g数据库中新的SQL优化介绍
【导读】根据对Oracle 10g数据库的介绍,可使用更多新的optimizer hints来控制优化行为。本文介绍了其中的hints的使用。
Oracle使用的hints调整机制一直很复杂,Oracle Technical Network对使用hints调整Oracle SQL的过程有很好的全面评述。根据对10g数据库的介绍,可使用更多新的optimizer hints来控制优化行为。现在让我们迅速了解一下这些强大的新hints:
spread_min_analysis
使用这一hint,你可以忽略一些关于如详细的关系依赖图分析等电子表格的编译时间优化规则。其他的一些优化,如创建过滤以有选择性的定位电子表格访问结构并限制修订规则等,得到了继续使用。
由于在规则数非常大的情况下,电子表格分析会很长。这一提示可以帮助我们减少由此产生的数以百小时计的编译时间。
例如:SELECT /*+ SPREAD_MIN_ANALYSIS */ ...
spread_no_analysis
通过这一hint,可以使无电子表格分析成为可能。同样,使用这一hint可以忽略修订规则和过滤产生。如果存在一电子表格分析,编译时间可以被减少到最低程度。
例如:SELECT /*+ SPREAD_NO_ANALYSIS */ ...
use_nl_with_index
这项hint使CBO通过嵌套循环把特定的表格加入到另一原始行。只有在以下情况中,它才使用特定表格作为内部表格:如果没有指定标签,CBO必须可以使用一些标签,且这些标签至少有一个作为索引键值加入判断;反之,CBO必须能够使用至少有一个作为索引键值加入判断的标签。
例如:SELECT /*+ USE_NL_WITH_INDEX (polrecpolrind) */ ...
CARDINALITY
此hint定义了对由查询或查询部分返回的基数的评价。注意如果没有定义表格,基数是由整个查询所返回的总行数。
例如:SELECT /*+ CARDINALITY ( [tablespec] card ) */
SELECTIVITY
此hint定义了对查询或查询部分选择性的评价。如果只定义了一个表格,选择性是在所定义表格里满足所有单一表格判断的行部分。如果定义了一系列表格,选择性是指在合并以任何顺序满足所有可用判断的全部表格后,所得结果中的行部分。
例如:SELECT /*+ SELECTIVITY ( [tablespec] sel ) */
然而,注意如果hints CARDINALITY 和 SELECTIVITY都定义在同样的一批表格,二者都会被忽略。
no_use_nl
Hint no_use_nl使CBO执行循环嵌套,通过把指定表格作为内部表格,把每个指定表格连接到另一原始行。通过这一hint,只有hash join和sort-merge joins会为指定表格所考虑。
例如:SELECT /*+ NO_USE_NL ( employees ) */ ...
no_use_merge
此hint使CBO通过把指定表格作为内部表格的方式,拒绝sort-merge把每个指定表格加入到另一原始行。
例如:SELECT /*+ NO_USE_MERGE ( employees dept ) */ ...
no_use_hash
此hint使CBO通过把指定表格作为内部表格的方式,拒绝hash joins把每个指定表格加入到另一原始行。
例如:SELECT /*+ NO_USE_HASH ( employees dept ) */ ...
no_index_ffs
此hint使CBO拒绝对指定表格的指定标签进行fast full-index scan。
Syntax: /*+ NO_INDEX_FFS ( tablespecindexspec ) */
no_index_ss
此hint使CBO拒绝对指定表格的指定标签进行skip scan。
Syntax: /*+ NO_INDEX_SS (tablespecindexspec ) */
no_star_transformation
此hint使CBO忽略star 询问信息。
Syntax: /*+ NO_STAR_TRANSFORMATION */
index_ss
此hint明确地为指定表格选择index skip scan。如果语句使用index range scan,Oracle将以对其索引值的升序排列来检查索引入口。在被分割的索引中,其结果为对每个部分内部的升序排列。
Syntax: /*+ INDEX_SS (tablespecindexspec) */
index_ss_asc
此hint明确地为指定表格选择index skip scan。如果语句使用index range scan,Oracle将以对其索引值的升序排列来检查索引入口。在被分割的索引中,其结果为对每个部分内部的升序排列。
Syntax: /*+ INDEX_SS_ASC (tablespecindexspec) */
index_ss_desc
此hint明确为指定表格选择index skip scan。如果语句使用index range scan,Oracle将以对其索引值的降序排列来检查索引入口。在被分割的索引中,其结果为对每个部分内部的降序排列。
Syntax: /*+ INDEX_SS_DESC (tablespecindexspec) */
cpu_costing
此hint为SQL语句打开CPU costing。这是对优化器的默认评估模式。优化器评估当执行给定查询时,数据库需要运行的IO操作数、IO操作种类、以及CPU周期数。
Syntax: /*+ CPU_COSTING (tablespecindexspec) */
no_cpu_costing
此hint为SQL语句关闭CPU costing。然后CBO使用IO cost模式,此模式忽略CPU花费,仅测量在single-block reads中的所有指标。
Syntax: /*+ NO_CPU_COSTING */
随着Oracle优化器越来越成熟,Oracle专家必须不断增加自己对调整SQL语句的工具储备。
上一篇:Oracle的TNS-12502错误原因及解决 下一篇:你的INTERNAL帐号密码忘记了怎么办
相关源码免费下载
相关文章
- 在linux平台用hugetlbfs模拟lock_sga
- 解决Oracle中Exp/Imp大量数据处理问题
- 在Oracle9i中计算时间差
- Oracle 9i 角色的管理
- 浅谈Oracle数据库的建模与具体设计
- 使用Oracle Text构建全文搜索应用程序
- 为1.7亿张记录表创建快速索引
- Oracle9i中分区Partition的使用简介
- Oracle 10g EM Database Console
- 如何使用ftp从Metalink上下载补丁
- 实现Oracle数据库复制
- 轻松四步帮你解决不能一次创建多表问题
- 用Oracle9i全索引扫描快速访问数据
- 教你如何优化Oracle的网络设置
- 跟踪Oracle 9i的CPU和I/O使用代价
- Oracle 恢复管理器 (RMAN) 的功能
- Oracle的自动数据库诊断监控程序剖析
- 在Oracle数据库10g中跟踪SQL
- 用SQL Loader将Excel数据导出到Oracle
- Oracle 9i截断数据表
站长推荐
- 3dmax 8.0 制作字体激光+动画
- 3ds Max 7.0 入门视频教程-绘制轮廓线
- 3DsMAX简单造型+表面贴图制作三维笔记本
- 3DS Max 7客厅装饰设计实战:Lightscape操作流程(1)
- 3DsMAX球体造型制作逼真苹果
- 3DS Max 7客厅装饰设计实战:Lightscape操作流程(3)
- 3DsMAX制作鲜艳娇嫩的三维牵牛花
- 3DS Max 7客厅装饰设计实战:后期处理
- vary中给hdr改变颜色的方法
- 3ds Max 7.0 入门视频教程-产生双面倒角
- 3DsMAX打造叶片上的精致三维蜻蜓
- 3ds Max 7.0 入门视频教程-修改图形
- 3DS MAX 9 界面体验
- 3ds Max 7.0 入门视频教程-描绘图形
- 3D 灯光技术基础
- 3ds Max 7.0 入门视频教程-显示背景金鹰图像
- VRay中文使用手册
- 3ds Max 7.0 入门视频教程-布尔相减运算
- 3DsMAX对象复制方法详解
- 3ds Max 7.0 入门视频教程-渲染文字效果
最近更新
- Oracle 8i中回滚段使用和ORA-1555
- 分析Oracle下导出某用户所有表的方法
- 如何用简易方法查找Oracle版本信息
- Oracle 10g回溯版本查询追踪行变化
- Qracle高级复制维护中要注意的方面
- oracle的update问题
- Oracle数据库在网格计算中的应用
- Oracle中的中间件体系结构多层调整
- 查出前台正在发出的sql语句的方法
- VB程序如何连接数据库
- ORACLE 9I FOR AIX 5L 的安装
- 优化Oracle停机时间及数据库恢复
- Oracle中表的连接及其调整
- 用Oracle9ias开发无线应用程序
- Oracle 10g最佳20个新特性
- 轻松四步帮你解决不能一次创建多表问题
- Oracle 10g Release2新功能之变化通知
- 在 Oracle数据库上构建 .NET 应用程序
- 入侵Oracle数据库时常用的操作命令整理
- 处理Oracle数据库中的坏块
