SQL Tuning
文章平均质量分 64
DeronQ
这个作者很懒,什么都没留下…
展开
-
Oracle查询转换
概述Oracle查询转换器的作用是把原始sql重写为语义相同的语句,目的是为了获得更高效的sql。查询转换主要有四种技术:子查询展开,视图合并,谓词推入,星型转换。了解查询转换是掌握SQL优化的基础,本文将对这四种技术做一些简单的介绍。子查询展开子查询展开是指优化器不再把子查询作为独立的单元处理,而是转换成等价的join方式。转换有两种方式:一是将子查询的结果集作为视图原创 2016-02-18 21:16:58 · 461 阅读 · 0 评论 -
Oracle优化器
Oracle优化器的作用就是为查询语句选择更有效的返回结果的路径。优化器分为两种:RBO和CBO。即分别是基于规则的和基于成本的优化器。本文的主要目的介绍CBO是如何计算成本的以及其算法的缺陷。从而理解为什么看似已经非常完善的CBO,在统计信息准确的情况下,也会发生选错执行计划的现象。RBO顾名思义,基于规则的优化器,在选择语句的执行路径时,是基于一系列带有优先级的规则来做决定。使用R原创 2016-06-06 12:35:08 · 6440 阅读 · 0 评论 -
获取执行计划对象信息
先用explain解释sql执行计划,然后执行下面的脚本获取执行计划里相关对象的信息----File name : execplan_stat.sql----Purpose : view table stats in a plan_tablecol object_owner for a10col object_owner for a10col object_原创 2016-06-06 12:22:38 · 330 阅读 · 0 评论 -
收集扩展统计信息
参数依次是用户名,表明,列名SQL> SELECT DBMS_STATS.CREATE_EXTENDED_STATS(USER, 'OPT_ACCT_FDIM', '(BUS_UNIT_SKID, ACCT_SKID)') FROM DUAL;DBMS_STATS.CREATE_EXTENDED_STATS(USER,'OPT_ACCT_FDIM','(BU翻译 2016-06-12 11:26:07 · 811 阅读 · 0 评论 -
长sql通过比较执行计划快速定位问题
下面的sql,2000多条数据,3分钟出结果。不加workshop_id秒出结果。比较两者的执行计划,发现慢sql对MTL_ORGANIZATIONS做了merge,通过修改CUX_INV_ITEM_REQ_SOURCE_V的定义,加hint:no_merge(mo)禁止视图合并解决问题。SELECT COUNT(1) FROM CUX_INV_ITEM_REQ_SOURCE_V TWHERE T原创 2016-06-12 11:33:41 · 559 阅读 · 0 评论 -
CBO相关原理--统计信息
CBO相关原理–统计信息Oracle优化器Oracle优化器的作用就是为查询语句选择更有效的返回结果的路径。优化器分为两种:RBO和CBO。即分别是基于规则的和基于成本的优化器。 顾名思义,基于规则的优化器,在选择语句的执行路径时,是基于一系列带有优先级的规则来做决定。使用RBO时,许多新特性将不可用,比如hint。这也导致了使用了RBO之后人工难以参与到查询优化中。RBO在10g仍然可用,但是不原创 2016-07-20 17:29:34 · 845 阅读 · 0 评论 -
hint不生效怎么找原因
给客户调优,使用pre_push,希望发生谓词推入,但不生效。 去查看sql的10053 trace时,看到客户将优化器版本设置为10.2.0.4. 在自己机器的11.2.0.4版本数据库测试时,hint是生效的;设置成10.2.0.4以后确实不生效。 那怎么找到触发这种改变的罪魁祸首呢: 首先,修改优化器版本后,查看会话值与实例值不同的隐含参数: 这些值发生的变化,肯定是修改优化器版本造原创 2017-01-05 14:59:21 · 1131 阅读 · 0 评论