《oracle hint (体系)了解》由会员分享,可在线阅读,更多相关《oracle hint (体系)了解(10页珍藏版)》请在人人文库网上搜索。

1、精品.写HINT目的 手工指定SQL语句的执行计划 hints是oracle提供的一种机制,用来告诉优化器按照我们的告诉它的方式生成执行计划。我们可以用hints来实现: 1) 使用的优化器的类型 2) 基于代价的优化器的优化目标,是all_rows还是first_rows。 3) 表的访问路径,是全表扫描,还是索引扫描,还是直接利用rowid。 4) 表之间的连接类型 5) 表之间的连接顺序 6) 语句的并行程度 2、HINT可以基于以下规则产生作用 表连接的顺序、表连接的方法、访问路径、并行度 3、HINT应用范围 dml语句 查询语句 4、语法 DELETE|INSERT|SELECT|。

2、UPDATE /*+ hint text hinttext. */ or DELETE|INSERT|SELECT|UPDATE -+ hint text hinttext. 如果语(句)法不对,则ORACLE会自动忽略所写的HINT,不报错 1. /*+ALL_ROWS*/ 表明对语句块选择基于开销的优化方法,并获得最佳吞吐量,使资源消耗最小化. 例如: SELECT /*+ALL_ROWS*/ EMP_NO,EMP_NAM,DAT_IN FROM BSEMPMS WHERE EMP_NO=SCOTT; 2. /*+FIRST_ROWS*/ 表明对语句块选择基于开销的优化方法,并获得最佳响应。

3、时间,使资源消耗最小化. 例如: SELECT /*+FIRST_ROWS*/ EMP_NO,EMP_NAM,DAT_IN FROM BSEMPMS WHERE EMP_NO=SCOTT; 3. /*+CHOOSE*/ 表明如果数据字典中有访问表的统计信息,将基于开销的优化方法,并获得最佳的吞吐量; 表明如果数据字典中没有访问表的统计信息,将基于规则开销的优化方法; 例如: SELECT /*+CHOOSE*/ EMP_NO,EMP_NAM,DAT_IN FROM BSEMPMS WHERE EMP_NO=SCOTT; 4. /*+RULE*/ 表明对语句块选择基于规则的优化方法. 例如: S。

4、ELECT /*+ RULE */ EMP_NO,EMP_NAM,DAT_IN FROM BSEMPMS WHERE EMP_NO=SCOTT; 5. /*+FULL(TABLE)*/ 表明对表选择全局扫描的方法. 例如: SELECT /*+FULL(A)*/ EMP_NO,EMP_NAM FROM BSEMPMS A WHERE EMP_NO=SCOTT; 6. /*+ROWID(TABLE)*/ 提示明确表明对指定表根据ROWID进行访问. 例如: SELECT /*+ROWID(BSEMPMS)*/ * FROM BSEMPMS WHERE ROWID=AAAAAAAAAAAAAA A。

5、ND EMP_NO=SCOTT; 7. /*+CLUSTER(TABLE)*/ 提示明确表明对指定表选择簇扫描的访问方法,它只对簇对象有效. 例如: SELECT /*+CLUSTER */ BSEMPMS.EMP_NO,DPT_NO FROM BSEMPMS,BSDPTMS WHERE DPT_NO=TEC304 AND BSEMPMS.DPT_NO=BSDPTMS.DPT_NO; 8. /*+INDEX(TABLE INDEX_NAME)*/ 表明对表选择索引的扫描方法. 例如: SELECT /*+INDEX(BSEMPMS SEX_INDEX) USE SEX_INDEX BECAUS。

6、E THERE ARE FEWMALE BSEMPMS */ FROM BSEMPMS WHERE SEX=M; 9. /*+INDEX_ASC(TABLE INDEX_NAME)*/ 表明对表选择索引升序的扫描方法. 例如: SELECT /*+INDEX_ASC(BSEMPMS PK_BSEMPMS) */ FROM BSEMPMS WHERE DPT_NO=SCOTT; 10. /*+INDEX_COMBINE*/ 为指定表选择位图访问路经,如果INDEX_COMBINE中没有提供作为参数的索引,将选择出位图索引的布尔组合方式. 例如: SELECT /*+INDEX_COMBINE(B。

7、SEMPMS SAL_BMI HIREDATE_BMI)*/ * FROM BSEMPMS WHERE SALV.AVG_SAL; 20. /*+NO_MERGE(TABLE)*/ 对于有可合并的视图不再合并. 例如: SELECT /*+NO_MERGE(V) */ A.EMP_NO,A.EMP_NAM,B.DPT_NO FROM BSEMPMS A (SELECT DPT_NO,AVG(SAL) AS AVG_SAL FROM BSEMPMS B GROUP BY DPT_NO) V WHERE A.DPT_NO=V.DPT_NO AND A.SALV.AVG_SAL; 21. /*+OR。

8、DERED*/ 根据表出现在FROM中的顺序,ORDERED使ORACLE依此顺序对其连接. 例如: SELECT /*+ORDERED*/ A.COL1,B.COL2,C.COL3 FROM TABLE1 A,TABLE2 B,TABLE3 C WHERE A.COL1=B.COL1 AND B.COL1=C.COL1; 22. /*+USE_NL(TABLE)*/ 将指定表与嵌套的连接的行源进行连接,并把指定表作为内部表. 例如: SELECT /*+ORDERED USE_NL(BSEMPMS)*/ BSDPTMS.DPT_NO,BSEMPMS.EMP_NO,BSEMPMS.EMP_NA。

9、M FROM BSEMPMS,BSDPTMS WHERE BSEMPMS.DPT_NO=BSDPTMS.DPT_NO; 23. /*+USE_MERGE(TABLE)*/ 将指定的表与其他行源通过合并排序连接方式连接起来. 例如: SELECT /*+USE_MERGE(BSEMPMS,BSDPTMS)*/ * FROM BSEMPMS,BSDPTMS WHERE BSEMPMS.DPT_NO=BSDPTMS.DPT_NO; 24. /*+USE_HASH(TABLE)*/ 将指定的表与其他行源通过哈希连接方式连接起来. 例如: SELECT /*+USE_HASH(BSEMPMS,BSDPT。

10、MS)*/ * FROM BSEMPMS,BSDPTMS WHERE BSEMPMS.DPT_NO=BSDPTMS.DPT_NO; 25. /*+DRIVING_SITE(TABLE)*/ 强制与ORACLE所选择的位置不同的表进行查询执行. 例如: SELECT /*+DRIVING_SITE(DEPT)*/ * FROM BSEMPMS,DEPTBSDPTMS WHERE BSEMPMS.DPT_NO=DEPT.DPT_NO; 26. /*+LEADING(TABLE)*/ 将指定的表作为连接次序中的首表. 27. /*+CACHE(TABLE)*/ 当进行全表扫描时,CACHE提示能够将。

11、表的检索块放置在缓冲区缓存中最近最少列表LRU的最近使用端 例如: SELECT /*+FULL(BSEMPMS) CAHE(BSEMPMS) */ EMP_NAM FROM BSEMPMS; 28. /*+NOCACHE(TABLE)*/ 当进行全表扫描时,CACHE提示能够将表的检索块放置在缓冲区缓存中最近最少列表LRU的最近使用端 例如: SELECT /*+FULL(BSEMPMS) NOCAHE(BSEMPMS) */ EMP_NAM FROM BSEMPMS; 29. /*+APPEND*/ 直接插入到表的最后,可以提高速度. insert /*+append*/ into tes。

12、t1 select * from test4 ; 30. /*+NOAPPEND*/ 通过在插入语句生存期内停止并行模式来启动常规插入. insert /*+noappend*/ into test1 select * from test4 ; 31. NO_INDEX: 指定不使用哪些索引 /*+ NO_INDEX ( table index index. ) */ select /*+ no_index(emp ind_emp_sal ind_emp_deptno)*/ * from emp where deptno=200 and sal300; 32. parallel select 。

13、/*+ parallel(emp,4)*/ * from emp where deptno=200 and sal300; 另:每个SELECT/INSERT/UPDATE/DELETE命令后只能有一个/*+ */,但提示内容可以有多个,可以用逗号分开,空格也可以。 如:/*+ ordered index() use_nl() */ - 类似如下的一条语句:insert into xxxx select /*+parallel(a) */ * from xxx a;数据量大约在75G左右,这位兄弟从上午跑到下午还没跑完,过来问我咋回事,说平常2hrs能跑完的东西跑了好几个小时还撒动静。查看系统。

14、性能也比较 正常,cpu,io都不繁忙,平均READ速度在80M/s左右(勉强凑合),但平均写速度只有10M不到。等待事件里面大量的 PX Deq Credit: send blkd,这里能看出并行出了问题,从而最后得知是并行用法有问题,修改之后20分钟完成了该操作。正确的做法应该是: alter session enable dml parallel; insert /*+parallel(xxxx,4) */ into xxxx select /*+parallel(a) */ * from xxx a; 因为oracle默认并不会打开PDML,对DML语句必须手工启用。 另外不得不说的是。

15、,并行不是一个可扩展的特性,只有在数据仓库或作为DBA等少数人的工具在批量数据操作时利于充分利用资源,而在OLTP环境下使用并行 需要非常谨慎。事实上PDML还是有比较多的限制的,例如不支持触发器,引用约束,高级复制和分布式事务等特性,同时也会带来额外的空间占用,PDDL同 样是如此。有关Parallel excution可参考官方文档,在Thomas Kyte的新书Expert Oracle Database architecture也有精辟的讲述。 - select count(*) From wid_serv_prod_mon_1100 a where a.acct_month = 20。

16、1010 and a.partition_id = 10 and serv_state not in (2HB, 2HL, 2HJ, 2HP, 2HF) and online_flag in (0) and incr_product_id in (2000020) and product_id in (2020966, 2020972, 2100297, 2021116) and billing_mode_id = 1 and exp_date to_date(201010, yyyymm) and not exists (select /*+no_index (b IDX_W_CDR_MON_SERV_ID_1100)*/ 1 from wid_cdr_mon_1100 b where b.acct_month = 201010 and b.ANA_EVENT_TYPE_4 in (10201010201, 10202010201, 10203010201, 10203010202, 10203030201, 10203030202, 10204010201, 10204010202, 10204030201) and a.serv_id = b.serv_id) 如有侵权请联系告知删除,感谢你们的配合!精品。

oracle使用hint启用并行,oracle hint (体系)了解相关推荐

  1. oracle使用hint启用并行,oracle hint 和 并行

    --------HINT--------------------- 1.给优化器多出一种选择 种类: 单表 多表 子查询 整个SQL语句 2.HINT 指定表名不能带上所在SCHEMA名 如果有别名应 ...

  2. oracle插入未调用并行,oracle并行之概念篇

    概念 串行执行: 串行执行时候,sql语句由一个server process处理(既只运行在一个cpu上),所以sql语句所能使用的资源受cpu限制,除去异步i/o外server process 处理 ...

  3. oracle 查询列合并行,Oracle 查询合并列

    在ORACLE  查询时,有时要将多个列合并成一行,其方法如下: 1. decode 函数 decode 函数的语法为: decode(条件,值1,返回值1,值2,返回值2,...值n,返回值n,缺省 ...

  4. oracle hint无效,聊聊oracle+hint 的使用

    Oracle拥有非常好的优化算法,尤其是在8i版本之后引入CBO,很多的sql oracle都可以帮我们选择非常好的执行计划,但是有些时候oracle也会犯犯傻,会帮我们选择非常不好的执行计划,这个时 ...

  5. Oracle 12c 新SQL提示(hint)

    Oracle 12c 新SQL提示(hint) Oracle 12c中引入了许多新特性,其中部分是和SQL相关的特性.而一些新的SQL提示也随着这些新特性被引入. enable_parallel_dm ...

  6. oracle hint 谓词推进,oracle常见hint

    与优化器模式相关的hint 1.1 /*+ all_rows */ 让优化器启动CBO 1.2 /*+ first_rows(n)*/优化器启动CBO,选择会快返回前n行数据的执行计划.与first_ ...

  7. oracle plsql开启并行,Oracle开启并行的几种方法

    并行执行是同时开启多个进程/线程来完成同一个任务,并行执行的每一个进程/线程都会消耗额外的硬件资源,所以并行执行的本质就是以额外的硬件资源消耗来换取执行时间的缩短.这里的额外硬件资源消耗是指对数据库服 ...

  8. oracle表启用online,Oracle数据库启动与关闭

    C:\app\Administrator\virtual\product\12.2.0\dbhome_2\bin>dir oracle.exe 驱动器 C 中的卷没有标签. 卷的序列号是 7E6 ...

  9. oracle 12.2 启用分片,关于Oracle Sharding,你想知道的都在这里

    编辑手记:随着Oracle12.2的发布,Sharding技术也逐渐变得越来越强大,关于Sharding,你所关心的问题的答案,可能都在这里. 注:本文来自Oracle FAQ文档翻译 相关阅读:什么 ...

最新文章

  1. Mark一下,滑动门插件
  2. html设置根rem,经过js动态设置根元素的rem方案
  3. Scrum 冲刺博客第四篇
  4. jQuery formValidator表单校验代码生成器ver1.0
  5. LeetCode 793. 阶乘函数后K个零(二分查找)
  6. mis dss gis_MIS中的决策支持系统(DSS)
  7. Log4j2进阶使用(Pattern Layout详细设置)
  8. python x y 定位点击,python - Python找到一个点相对于其他四个已知点的x,y位置 - 堆栈内存溢出...
  9. python计算机中丢失api-ms-win-crt-runtime-l_api-ms-win-crt-runtime-l1-1-0.dll
  10. 洛谷 P2167 [SDOI2009]Bill的挑战
  11. 3389远程连接问题的一个解决办法
  12. I00027 Java语言程序-打印九九乘法表
  13. 互联网晚报 | 10月25日 星期一 | 小米15.5亿拿地打造上海总部;恒大将向新能源汽车产业转型;华为运动健康全栈升级...
  14. word2vec加载异常解决:UnicodeDecodeError: ‘utf-8‘ codec can‘t decode bytes in position。。。
  15. 著名的图像检索系统介绍[转]
  16. Windows Office 2019 很抱歉,此功能看似已中断,并需要修复
  17. 小米再次回购股票:斥资近1亿港元 传递市场信心
  18. Python中的base64、base32实例
  19. 【Google】谷歌浏览器背景颜色变黑
  20. android 虹软 例子,虹软离线人脸识别源码Android版本

热门文章

  1. 学习QT之QTime类
  2. 使用flash美化vc6.0的界面
  3. 上海 交通卡退卡规则,余额给退吗
  4. stringtokenizer java_java使用StringTokenizer字符串分割
  5. 东方梦符祭未能收到服务器响应,东方梦符祭loading不进去 常见问题解决办法
  6. 大佬手把手教你如何仿写出大厂的APP,知乎上转疯了!
  7. 老板叫我把几十万条Excel数据录入系统
  8. 青龙脚本 禁用重复任务无法获取tasklist
  9. Shiro中常见过滤器
  10. 由于没有公钥,无法验证下列签名: NO_PUBKEY 3B4FE6ACC0B21F32