什么时候使用NO_UNNEST】的更多相关文章

经常有人把这三个hint搞混,主如果因为对三种重写道理不清楚.特总结如下.(实验景象为10204)1. no_unnest, unnestunnest我们称为对子查询展开,顾名思义,就是别让子查询孤单地嵌套(nest)在里面.所以un_unnest双重否定代表必然,即让子查询不展开,让它嵌套(nest)在里面.现做一个简单的实验:create table hao1 as * dba_objects;create table hao2 as * dba_objects;analyze table…
select * from test a where object_id in (select department_id from hr.dept_1 dept where department_id IN (select department_id from hr.employees_1 emp)); SQL> select count(*) from test; COUNT(*) ---------- 2319328 SQL> select count(*) from dept_1; C…
常常有人把这三个hint搞混,主要是因为对三种重写原理不清楚.特总结如下.(实验环境为10204)1. no_unnest, unnestunnest我们称为对子查询展开,顾名思义,就是别让子查询孤单地嵌套(nest)在里面.所以un_unnest双重否定代表肯定,即让子查询不展开,让它嵌套(nest)在里面.现做一个简单的实验:[@more@] create table hao1 as select * from dba_objects;create table hao2 as select…
Oracle 关键字(保留字) DBA账户下执行SQL语句:select * from v$reserved_words ;  可得到所有的关键字:   1 ! 1 2 & 1 3 ( 1 4 ) 1 5 * 1 6 + 1 7 , 1 8 - 1 9 . 1 10 / 1 11 : 1 12 < 1 13 << 2 14 = 1 15 > 1 16 @ 1 17 A 1 18 ABORT 5 19 ACCESS 6 20 ACCESSED 8 21 ACCOUNT 7 2…
管理员账户登录后,执行以下命令:  select * from v$reserved_words 附上参考: NOMONITORINGRECORDS_PER_BLOCKCASCADEDYNAMIC_SAMPLINGCOLUMN_STATSGROUPSNO_PX_JOIN_FILTERCONSTRAINTNO_STATS_GSETSSWAP_JOIN_INPUTSNOORDERTRIGGERSSHAREDEMANDTIMEOUTLOBGBY_CONC_ROLLUPROWDEPENDENCIES+N…
Hint概述 基于代价的优化器是很聪明的,在绝大多数情况下它会选择正确的优化器,减轻了DBA的负担.但有时它也聪明反被聪明误,选择了很差的执行计划,使某个语句的执行变得奇慢无比. 此时就需要DBA进行人为的干预,告诉优化器使用我们指定的存取路径或连接类型生成执行计划,从而使语句高效的运行.例如,如果我们认为对于一个特定的语句,执行全表扫描要比执行索引扫描更有效,则我们就可以指示优化器使用全表扫描.在Oracle 中,是通过为语句添加 Hints(提示)来实现干预优化器优化的目的.不建议在代码中使…
转自http://www.2cto.com/database/201310/251176.html 对于in和exists.not in和not exists还是有很多的人有疑惑,更有甚者禁用not in,所有的地方都要用not exists,它真的高效吗? [实验1 in和exists原理及性能比较] 准备数据 create table test1 as select * from dba_objects where rownum <=1000; create table test2 as s…
基于Oracle的SQL优化(社区万众期待数据库优化扛鼎巨著) 崔华 编   ISBN 978-7-121-21758-6 2014年1月出版 定价:128.00元 856页 16开 编辑推荐 本土Oracle数据库性能优化顶级大师泣血力作 集十数年实战修行与潜心钻研之大成 盖国强等国内数据库一线名家联合推荐 囊括数据库性能优化技术所有分支与脉络,讲解通俗,实例经典 内容提要 <基于Oracle的SQL优化>是一本与众不同的书,它的目的是使读者真正掌握如何在 Oracle数据库里写出高质量的…
Query Transformation 在继续研究SQL的其他操作(比如Join)对CBO的影响之前,我们来讨论一下Oracle优化器的Query Transformation特性.我们都习惯于根据我们的SQL结构来判断SQL的效率,但是我们必须要知道,对于我们写好的SQL,Oracle的优化器会进行改写,或者说是进行转化.转化的目的是是要把我们的SQL转化成oracle认为更简单,更有效率的结构,需要注意的是,有些时候(主要取决的版本),CBO的的某些转化似乎不是基于cost的,而是基于ru…
FILTER的适用范围: 1. 主表返回的记录数较少 2.子查询返回记录数较小 下面做实验证明: select department_name from hr.dept_1 dept where department_id IN (select department_id from hr.employees_1 emp); SQL> select count(*) from dept_1; COUNT(*) ---------- 2 SQL> select count(*) from empl…
Oracle知识点 ps:由于是自己看的所以笔记比较乱,大家谅解 Commit rollback Sql核心语句之select Selct中要用到以下语句 From语句 Where语句 Group by语句 Group by 来进行分组,分组的参数如果有重复的,只返回一个行值.(比如我按id分组如果记录中有两个id为1的记录,这时候只返回一行) Having语句 将分组汇总后的查询结果限定为只有该子句的条件为真的数据行. 一般情况下having放在groupby后面执行. Order by语句…
select event,count(1) from gv$session group by event order by 2;exec dbms_workload_repository.create_snapshot;select 'alter system kill session '''||sid||','||serial#||''';' from v$session where event='latch free'; SET LINESIZE 200SET NEWPAGE NONECOL…
[20181130]如何猜测那些值存在hash冲突.txt --//今年6月份开始kerrycode的1个帖子提到子查询结果缓存在哈希表中情况:--//链接:http://www.cnblogs.com/kerrycode/p/9099507.html,摘要:通俗来将,当使用标量子查询的时候,ORACLE会将子查询结果缓存在哈希表中, 如果后续的记录出现同样的值,优化器通过缓存在哈希表中的值,判断重复值不用重复调用函数,直接使用上次计算结果即可.从而减少调用函数次数,从而达到优化性能的效果.另外…
[20181130]hash冲突导致查询缓慢.txt --//昨天看了链接https://jonathanlewis.wordpress.com/2018/11/26/shrink-space-2/,演示了Shrink Space导致--//执行语句缓慢的情况,我自己重复测试,实际上这样发生的概率还是很低的,我个人认为,至于Shrink Space是否好坏,--//我个人还是根据实际的情况来确定. 1.环境:SCOTT@book> @ ver1 PORT_STRING              …
原文地址:http://czmmiao.iteye.com/blog/1478465 Hint概述 基于代价的优化器是很聪明的,在绝大多数情况下它会选择正确的优化器,减轻了DBA的负担.但有时它也聪明反被聪明误,选择了很差的执行计划,使某个语句的执行变得奇慢无比. 此时就需要DBA进行人为的干预,告诉优化器使用我们指定的存取路径或连接类型生成执行计划,从 而使语句高效的运行.例如,如果我们认为对于一个特定的语句,执行全表扫描要比执行索引扫描更有效,则我们就可以指示优化器使用全表扫描.在Oracl…
create table test0605 as select * from dba_objects; select t1.owner,t1.object_name,t1.object_id from test0605 t1 where t1.object_id=3344; select t1.SQL_ID,t1.HASH_VALUE,t1.SQL_TEXT,t1.SQL_FULLTEXT,to_char(t1.LAST_ACTIVE_TIME,'yyyy-mm-dd hh24:mi:ss')…
oracle 10g 有64个hints , 11g 增加到71 个, 下表中红色的代表已经过时的, 粗体的是11g 新增. Optimization Goals and Approaches (2) Access Path Hints (17) Other (20) Join Operation (7) ALL_ROWS FIRST_ROWS RULE CLUSTER FULL HASH INDEX NO_INDEX INDEX_ASC INDEX_DESC INDEX_COMBINE IND…
Hint 是Oracle 提供的一种SQL语法,它允许用户在SQL语句中插入相关的语法,从而影响SQL的执行方式. 因为Hint的特殊作用,所以对于开发人员不应该在代码中使用它,Hint 更像是Oracle提供给DBA用来分析问题的工具 .在SQL代码中使用Hint,可能导致非常严重的后果,因为数据库的数据是变化的,在某一时刻使用这个执行计划是最优的,在另一个时刻,却可能很差,这也是CBO 取代RBO的原因之一,规则是死的,而数据是时刻变化的,为了获得最正确的执行计划,只有知道表中数据的实际情况…
遇到怀疑可能使用了关键字,就来搜一搜吧 ... Oracle 关键字(保留字) 大全 其实这个东西可以在oracle 上输入一个sql语句就可以得到: select * from v$reserved_words order by keyword asc;   //order 后边不是必须的,那只是个排序,使结果不至于杂乱无章,如果用的是PL/SQL的话的SQL window的话,在获得结果后,可以点击   按钮,使得查询结果不分页,然后可以 右击结果区空白处--->Export results…
Oracle 关键字(保留字) 大全   转 其实这个东西可以在oracle 上输入一个sql语句就可以得到: select * from v$reserved_words order by keyword asc;   //order 后边不是必须的,那只是个排序,使结果不至于杂乱无章,如果用的是PL/SQL的话的SQL window的话,在获得结果后,可以点击   按钮,使得查询结果不分页,然后可以 右击结果区空白处--->Export results--->Html file(推荐这个,…
作者介绍 梁敬彬,福富研究院副理事长.公司唯一四星级内训师,国内一线知名数据库专家,在数据库优化和培训领域有着丰富的经验.多次应邀担任国内外数据库大会的演讲嘉宾,在业界有着广泛的影响力.著有多本畅销书籍,代表作有<收获,不止SQL优化>等. 前两章给大家介绍了发现问题后的整体解决思路,接下来进入SQL优化的局部性思路,这一章我们将学习SQL优化的重要知识:执行计划. 执行计划是什么?如何读懂执行计划?读懂执行计划对我们又有什么用?面对这些疑问,我们从执行计划分析概述.读懂执行计划的关键.从案例…
sql 被保存在 share pool 后, 开始解析, 解析包括语句的语法, 检验及对象, 以确认该用于是否有该对象的权限, 如果这些都通过了, 接下来就要看这个语句之前是否被执行过, 如果是, oracle 将取回之前解析的信息并重用, 这就是软解析, 如果没有被执行过, 那么oracle就将执行所有的工作来为当前语句生成执行计划, 并将它存在于缓存中以便将来使用, 这就是硬解析. 硬解析需要做很多工作, 如果想看硬解析都干了什么, 最简单的办法是打开扩展SQL追踪, 执行一个语句然后查询追…
oracle里的查询转换的作用 Oracle里的查询转换,有称为查询改写,指oracle在执行目标sql时可能会做等价改写,目的是为了更高效的执行目标sql 在10g及其以后的版本中,oracle会对某些类型的查询转换(比如子查询展开.复杂视图合并等)计算成本,oracle会分别计算查询转换后的 等价改写的sql的成本和原始sql的成本,如果改写后的sql的成本低于原始sql的成本,oracle才会对目标sql执行查询转换. 子查询展开—in.exists.. 指优化器不在将子查询当做一个独立的…
源网址http://tech.e2sn.com/oracle-scripts-and-tools/session-snapper 内容: If you want to just download Snapper, you can get it from here: http://blog.tanelpoder.com/files/scripts/snapper.sql(please right click on the file and use Save as... instead of cop…
http://czmmiao.iteye.com/blog/1478465 Hint概述  基于代价的优化器是很聪明的,在绝大多数情况下它会选择正确的优化器,减轻了DBA的负担.但有时它也聪明反被聪明误,选择了很差的执行计划,使某个语句的执行变得奇慢无比. 此时就需要DBA进行人为的干预,告诉优化器使用我们指定的存取路径或连接类型生成执行计划,从 而使语句高效的运行.例如,如果我们认为对于一个特定的语句,执行全表扫描要比执行索引扫描更有效,则我们就可以指示优化器使用全表扫描.在Oracle 中,…
Oracle SQL Server DB2 ! @@IDENTITY   DETERMINISTIC & ADD   DISALLOW      ( ALL   DISCONNECT    ) ALTER   DISTINCT      * AND   DO            + ANY   DOUBLE        , AS   DROP          - ASC   DSNHATTR      . AUTHORIZATION   DSSIZE        / AVG   DYNA…
Hint概述 基于代价的优化器是很聪明的,在绝大多数情况下它会选择正确的优化器,减轻了DBA的负担.但有时它也聪明反被聪明误,选择了很差的执行计划,使某个语句的执行变得奇慢无比. 此时就需要DBA进行人为的干预,告诉优化器使用我们指定的存取路径或连接类型生成执行计划,从 而使语句高效的运行.例如,如果我们认为对于一个特定的语句,执行全表扫描要比执行索引扫描更有效,则我们就可以指示优化器使用全表扫描.在Oracle 中,是通过为语句添加 Hints(提示)来实现干预优化器优化的目的. 不建议在代码…
与优化器模式相关的Hint 1 ALl_ROWS   让优化器启用CBO /*+ all_rows */ 2  first_rows(n)     让优化器启用CBO 模式,而且得到目标sql的执行计划是会选择那些能以最快时间返回n条记录的执行路径 /*+ first_rows */ 3 rule   启用RBO /*+ rule */ 与表访问相关 1    /*+ full */   对目标表执行全表扫描 2    /*+ rowid(tablename) */  针对单个表的HInt,他的…
昨天刚写了半连接改写系列,今天就遇到了此类型SQL: 优化前 耗时:28s 返回:0 SELECT D.DAILYAUDITNO, D.TRANSTOACC FROM PB_DOIC.MM_DAILYREPORT_TD D WHERE D.REPORTSTATUS = '4' AND D.TRANSTOACC IN ('00', 'B1') AND EXISTS (SELECT 1 FROM PB_DOIC.MM_DAILYREPORT_DETAIL_TD WHERE DAILYAUDITNO…
原创 2016-09-12 韩锋  作者介绍 韩锋,宜信技术研发中心数据库架构师.精通多种关系型数据库,曾任职于当当网.TOM在线等公司,曾任多家公司首席DBA.数据库架构师等职,多年一线数据库架构.设计.开发经验.著有<SQL优化最佳实践>一书. 一.提示(Hint)概述 1为什么引入Hint? Hint是Oracle数据库中很有特色的一个功能,是很多DBA优化中经常采用的一个手段.那为什么Oracle会考虑引入优化器呢?基于代价的优化器是很聪明的,在绝大多数情况下它会选择正确的优化器,减轻…