随笔分类 -  oracle tunning

一次mysql 优化 (Using temporary ; Using filesort)
摘要:遇到一个SQL执行很慢 SQL 如下: SELECT ... FROM tableA WHERE time = 1492044535 and time 阅读全文

posted @ 2017-04-13 14:25 kramer 阅读(20914) 评论(0) 推荐(0)

组合索引
摘要:组合索引,顾名思义是多个列组成的索引。它通常会比单列的索引更有效率。要让oracle能够使用到一个组合索引,要求where条件中要包含该索引的先导列。比如:create index ind1 on test(col1,col2,col3,col4);对于这个组合索引,只要where条件里有col1,... 阅读全文

posted @ 2014-08-08 16:46 kramer 阅读(865) 评论(0) 推荐(0)

no_merge hint
摘要:This is tested in 10gR2.SQL> select * from v$version;BANNER------------------------------------------------Oracle Database 10g Enterprise Edition Release 10.2.0.5.0 - 64biPL/SQL Release 10.2.0.5.0 - ProductionCORE 10.2.0.5.0 ProductionTNS for Solaris: Version 10.2.0.5.0 - ProductionNLSRTL Ve... 阅读全文

posted @ 2014-03-31 12:00 kramer 阅读(440) 评论(0) 推荐(0)

优化实例- not use hash to avoid temp space issue
摘要:在展开下面的original sql 和 execution plan之前,要知道这个SQL的问题就在于占用大量的TEMP spaceorignal SQLSELECT roster.IC_N AS icN, roster.WORK_SHIFT_C AS workShiftC, roster.EXTRA_SHIFT_C AS extraShiftC, roster.GENERATED_SHIFT_C AS generatedShiftC, roster.RESERVE_SHIFT_C AS reserveShiftCode, num.STAFF_N AS staffN... 阅读全文

posted @ 2014-03-18 18:03 kramer 阅读(396) 评论(0) 推荐(0)

优化实例- not in 和 not exists
摘要:客户运行一个SQL,非常慢。于是进行了一下改写。速度飞快,首先看一下原来的SQL。original sqlSQL> explain plan for 2 select count(*) from pnadmin.si_vsl where vsl_status_i = 'A' and to_number(vsl_id_n) not in (select vessel_id from pnadmin.vessel_master);Explained.SQL> select * from table(dbms_xplan.display());PLAN_TABLE_OUT 阅读全文

posted @ 2014-03-18 17:41 kramer 阅读(1485) 评论(0) 推荐(0)

histogram
摘要:首先要知道一个概念selectivit--选择性。选择性是一个row source中可能返回的row的多少。比如一个100行的表,经过查询返回48行,那么selectivity就是0.48。 selectivity对CBO的判断非常重要,简单的说,如果selectivity很大,返回的row占row... 阅读全文

posted @ 2014-03-03 16:00 kramer 阅读(1597) 评论(0) 推荐(0)

not in 和 <> 不走索引
摘要:首先我们要知道的一点就是CBO的代码oracle是不会对我们公开的,起码现在是。所以本文中的结论不一定适用所有的版本。在应用本文的结论之前最好先试一下。ok 下面就是本文的结论,当你在where语句中使用不等于或者not in时候,oracle 倾向于忽略索引。 比如:SQL> Select * from test where text'star'; ID TEXT---------- ------------ 4939426 sun这条语句即使在test上有索引,oracle也仍然会忽略。接下来我们分析证明一下这是为什么。 其实,我认为oracle这么做是有道理的。一般 阅读全文

posted @ 2014-02-27 15:14 kramer 阅读(17953) 评论(0) 推荐(0)

Reducing Loop Overhead for DML Statements and Queries with Bulk SQL(10gr2)
摘要:PL/SQL运行SQL的机制是把SQL语句,比如DML,SELECT,发送给SQL 引擎。然后SQL引擎把SQL语句的结果返回给PL/SQL。想象一下,下面这样的PL/SQL块。FOR j IN 1..99999999 LOOP VAR1[i]=i; INSERT INTO TEST VALUES(VAR[i]);END LOOP;这个PL/SQL块非常简洁明了,它循环9999999次,每一次循环都把 i 赋值到 VAR1[i]中,然后把这个VAR1[ i ] insert到表TEST中。这么简单的SQL却有着非常严重的性能问题。因为他要循环99999999次,每一次循环PL/SQL引擎都.. 阅读全文

posted @ 2013-04-25 11:33 kramer 阅读(246) 评论(0) 推荐(0)

view optimization (10gr2)
摘要:When talking about view optimization, we need to know about mergeable view and unmergeable view. 10gr2 concept gives very clear definition.The optimizer can merge a view into a referencing query block when the view has one or more base tables, provided the view does not contain:set operators (UNION, 阅读全文

posted @ 2013-04-24 15:29 kramer 阅读(264) 评论(0) 推荐(0)

SQL Queries and Subqueries(10gR2)
摘要:Before start reading this article, you need to pay attention to the words in red.About Queries and SubqueriesCreating Simple QueriesHierarchical QueriesThe UNION [ALL], INTERSECT, MINUS OperatorsSorting Query ResultsJoinsUsing SubqueriesUnnesting of Nested SubqueriesSelecting from the DUAL TableDist 阅读全文

posted @ 2013-04-15 14:41 kramer 阅读(825) 评论(0) 推荐(0)

Unnesting of Nested Subqueries ( 10gr2 )
摘要:本文的目的是要研究一下nested subquery。所谓nested subquery,就是指出现在where语句中用括号括起来的子查询。通常oracle对这些子查询的处理情况是把它们当做一个独立的对象,嵌套在父查询中执行。比如说下面这个例子SQL> select /*+ gather_plan_statistics */ ename from emp where exists (select /*+ no_unnest */ 1 from dept where deptno=emp.deptno and deptno=20);----------------------------- 阅读全文

posted @ 2013-04-12 16:47 kramer 阅读(459) 评论(0) 推荐(0)

IN , EXIST
摘要:在SQL优化中,经常会有人问IN,NOT IN,NOT EXIST, EXIST的区别,会问IN 和 EXIST, NOT IN 和 NOT EXIST做比较哪些会更快些。 以前在RBO时代也许他们还是有区别的,但是现在oracle都是用CBO来处理SQL了,应该不会有区别。 但这只是猜想,还是要试... 阅读全文

posted @ 2013-04-10 15:11 kramer 阅读(353) 评论(0) 推荐(0)

导航