
sql 优化
mydba_bin
这个作者很懒,什么都没留下…
展开
-
Oracle CBO知识点
CBO说明(第一部分)1. Rule Based Optimizer(RBO)基于规则Cost Based Optimizer(CBO)基于成本,或者讲统计信息 ORACLE已经明确声明在ORACLE9i之后的版本中(ORACLE 10G ),RBO将不再支持。因此选择CBO是必然的趋势。2. RBO与C BO的差异点:a) RBO自ORACL转载 2013-04-12 13:38:34 · 647 阅读 · 0 评论 -
并行(Parallel)和OLAP系统
并行(Parallel)和OLAP系统 并行的实现机制是:首先,Oracle会创建一个进程用于协调并行服务进程之间的信息传递,这个协调进程将需要操作的数据集(比如表的数据块)分割成很多部分,称为并行处理单元,然后并行协调进程给每个并行进程分配一个数据单元。比如有四个并行服务进程,他们就会同时处理各自分配的单元,当一个并行服务进程处理完毕后,协调进程就会给它们分配另外的单元,如此反复,直到表上的转载 2013-06-29 09:56:43 · 937 阅读 · 0 评论 -
何时会发生db file sequential read等待事件?
”db file sequential read”单块读等待是一种最为常见的物理IO等待事件,这里的sequential指的是将数据块读入到相连的内存空间中(contiguous memory space),而不是指所读取的数据块是连续的。该wait event可能在以下情景中发生:最为常见的是执行计划中包含了INDEX FULL SCAN/UNIQUE SCAN,此时出现”db file转载 2013-06-29 16:15:24 · 720 阅读 · 0 评论 -
由于没有收集直方图而走全表
SELECT T.INSTOREITEMID, II.TEXTATTR12, T.binbin2ID FROM binbin1 T, binbin2 II WHERE II.TEXTATTR11 = '0' AND T.binbin2ID=II.binbin2ID ;no rows selectedElapsed: 00:04:14.28Execution Plan--------原创 2013-08-13 14:14:04 · 690 阅读 · 0 评论 -
分页语句优化
SQL> select * from ( select row_.*, rownum rownum_ from ( select i.itemname, i.ITEMDESC, 2 --物料描述 3 i.LOTNUM, 4 --批次 5 case when o.requestflag = 'Y' then '物资申领' else (select原创 2013-08-13 14:22:12 · 689 阅读 · 0 评论 -
or改写为union all性能提升n倍
SQL> explain plan for SELECT SUM(OCCOUNT) as EVENTCOUNT , F_4 FROM binbin1 WHERE binbin1.EUIDCODE like '19739-19740-704013-%' or binbin1.EUIDCODE like '19739-19740-704018-%' or binbin1.EUIDCODE like '原创 2013-08-13 14:38:25 · 2299 阅读 · 1 评论 -
sql profile使用说明
sql profile实验:create table binbin (id number);insert into binbin values('1');commit;beginfor i in 1..1000loopinsert into binbin values('2');end loopcommit;end;SQL> begin 2 f原创 2013-08-14 18:52:16 · 1181 阅读 · 0 评论 -
不要乱加hint
不要乱加hintSQL> SELECT id FROM (SELECT /*+ INDEX(si SIE_INVOICES_N3) */ si.id FROM binbin1 si, 2 binbin2 bs where si.id = bs.id and si.type ='AR_INVOICE' AND 3 si.import_failed_reaso原创 2013-08-15 14:45:58 · 786 阅读 · 0 评论 -
分页语句特殊搞法-内联改join
SQL> select * from (select rows_.*, rownum rn from ( select piresult.* from (select null IMPLEMENT_RESULT_ID, baseinfo.implement_id, 2 baseinfo.cycle_id, baseinfo.emp_class_id, baseinfo.org_原创 2013-08-15 14:55:27 · 1605 阅读 · 0 评论 -
自动负载信息库:AWR的引入
自动负载信息库:AWR的引入内存中记录的ASH信息始终是有限的,为了保存历史数据,这些信息最终需要写入磁盘。这些历史信息的存储,引出了Oracle 10g的另外一个新特性:自动负载信息库(Automatic Workload Repository,AWR)。1. AWR的采样机制:AWR收集关于该特定数据库的操作统计信息和其他统计信息,Oracle以固定的时间间隔(默认为每小时转载 2013-06-28 23:18:14 · 865 阅读 · 0 评论 -
index_join
index_join:分类: oracle hint2008-10-24 12:00 1043人阅读 评论(0)收藏 举报joinobjectaccessoracletableindex_join:index join顾名思义是对index进行关联,oracle通过hash index join的方式实现了避免对表的访问.所有的数据都从索引中直接获得.它不受转载 2013-06-28 17:42:05 · 2073 阅读 · 0 评论 -
hint
其实Oracle的优化器有两种优化方式,基于规则的优化方式(Rule-Based Optimization,简称为RBO)基于代价的优化方式(Cost-Based Optimization,简称为CBO)所以hint也不例外,除了/*+rule*/其他的都是CBO优化方式RBO方式: 优化器在分析SQL语句时,所遵循的是Oracle内部预定的一些规则。比如我们常见转载 2013-04-12 15:14:49 · 734 阅读 · 0 评论 -
常见Oracle HINT的用法
1. /*+ALL_ROWS*/ 表明对语句块选择基于开销的优化方法,并获得最佳吞吐量,使资源消耗最小化. 例如: SELECT /*+ALL+_ROWS*/ EMP_NO,EMP_NAM,DAT_IN FROM BSEMPMS WHERE EMP_NO='SCOTT'; 2. /*+FIRST_ROWS*/ 表明对语句块选择基于开销的优化方法,并获得最佳响应时间,转载 2013-04-12 15:23:56 · 412 阅读 · 0 评论 -
oracle hint详解
Hint 是Oracle 提供的一种SQL语法,它允许用户在SQL语句中插入相关的语法,从而影响SQL的执行方式。因为Hint的特殊作用,所以对于开发人员不应该在代码中使用它,Hint 更像是Oracle提供给DBA用来分析问题的工具 。在SQL代码中使用Hint,可能导致非常严重的后果,因为数据库的数据是变化的,在某一时刻使用这个执行计划是最优的,在另一个时刻,却可能很差,这也是CBO 取代转载 2013-04-12 15:29:22 · 907 阅读 · 0 评论 -
Oracle SQL的优化规则
Oracle SQL的优化规则:尽量少用IN操作符,基本上所有的IN操作符都可以用EXISTS代替 用IN写出来的SQL的优点是比较容易写及清晰易懂,但是用IN的SQL性能总是比较低的,从ORACLE执行的步骤来分析用IN的SQL与不用IN的SQL有以下区别: ORACLE 试图将其转换成多个表的连接,如果转换不成功则先执行IN里面的子查询,再查转载 2013-05-04 11:23:20 · 648 阅读 · 0 评论 -
ORACLE中查看执行计划
转载地址:http://hi.baidu.com/xyooo/blog/item/eba0dc1f40072967f624e49e.html 有三种方法: 1.Explain planexplain plan for select * from aa;查看结果:select * from table(dbms_xplan.display());转载 2013-05-04 11:20:32 · 573 阅读 · 0 评论 -
Oracle全局临时表
CREATE GLOBAL TEMPORARY TABLE TABLENAME (COL1 VARCHAR2(10),COL2 NUMBER) ON COMMIT PRESERVE(DELETE) ROWS ;这种临时表不占用表空间,而且不同的SESSION之间互相看不到对方的数据在会话结束后表中的数据自动清空,如果选了DELETE ROWS,则在提交的时候即清空数据,PRES转载 2013-06-09 14:58:49 · 897 阅读 · 0 评论 -
oracle嵌套循环的执行计划优化
嵌套循环连接处理的两个数据集被称为外部循环(outer loop,也就是驱动数据源,driving row soulce )和内部循环〔 inner loop )。外部循环为左子节点,内部循环为右子节点.如图10 一6 所示,当外部循环执行一次的时候,内部循环需要针对外部循环返回的每条记录执行一次。 外部循环称为外表或者驱动表,而内部循环称为内表或者被驱动表 嵌套循环连接转载 2013-06-08 21:16:37 · 1017 阅读 · 0 评论 -
Oracle10中如何用dbms_xplan分析执行计划
Oracle CBO中选择执行计划,有时候不是最优执行计划,造成该原因通俗讲是因为CBO计算出来的处理行数量,与实际处理行的数量相差很大。在9i中,两者的值需要分别从v$sql_plan.cardinality和v$sql_plan_statistics.last_output_rows提取,或者通过tkprof分析10046输出rows。10g中引入了dbms_xplan.display_cur转载 2013-06-08 21:40:46 · 858 阅读 · 0 评论 -
分页优化-蛋疼的空值
select * from (SELECT BH.LAST_UPDATE_DATE, BH.LAST_UPDATED_BY, BH.CREATION_DATE, BH.CREATED_BY, BH.LAST_UPDATE_LOGIN, BH.EN原创 2013-08-15 20:06:56 · 1066 阅读 · 0 评论