潮溜まりでジャブジャブ、
SQLチューニング

Rock Pool / Michael

Hiroshi Sekiguchi ( @discus_hamburg )
13年11月16日土曜日
自己紹介

@discus_hamburg

関口 裕士 (屋号 Stargrass Software)
最近の仕事 : Software Engineer < DB Engineer
最近は医者のような問診に興味を持っている
JPOUG ボードメンバー
Oracle ACE (2012)
Blog : Mac De Oracle / http://discus-hamburg.cocolog-nifty.com

13年11月16日土曜日
皆が、Deep   dive、Deep   diveというの
で、Oracle   Coreの深い海ではなく沢⼭山
のSQL⽂文が泳ぐ浅瀬へShallow   Diveす
ることに決めた天の邪⻤⿁鬼。

13年11月16日土曜日
潮溜溜まりに取り残された、⼀一癖ありそう
なSQL⽂文を釣り上げてみると...
いろいろな病に苦しんでいた。
治療療できたのか、治療療できなかったの
か...

13年11月16日土曜日
釣り上げたSQL文の病名
過フィルタリング症候群
クエリー分裂症
バッファキャッシュ欠乏症
参照整合性制約アレルギー

13年11月16日土曜日
過フィルタリング症候群

13年11月16日土曜日
ウォームアップ!

13年11月16日土曜日
クエリー分裂症

13年11月16日土曜日
釣り上げたSQLは、一匹で
あるかのように見えるが...
散らばっている情報が治療
を難しくする...
13年11月16日土曜日
問診結果
OLTPで分散クエリーを利用している。(分散DB)
OLTPなので大きなクエリーではないものの非機能要
件が厳しいので可能な限り改善したい。
大人の事情により、SQL文だけしか変更できない。
(・・)

13年11月16日土曜日
分散クエリーとリモートクエリー

どのような
クエリーなのでしょう?

13年11月16日土曜日
分散クエリー

13年11月16日土曜日
リモートクエリー

13年11月16日土曜日
釣り上げたSQL文
SELECT
	
  	
  	
  	
  	
  	
  	
  	
  /*+	
  USE_NL(tab1	
  tab2	
  tab3	
  tab4)	
  */
	
  	
  	
  	
  	
  	
  	
  	
  tab4.*
FROM
	
  	
  	
  	
  	
  	
  	
  	
  tab1
	
  	
  	
  	
  	
  	
  	
  	
  INNER	
  JOIN	
  tab2
	
  	
  	
  	
  	
  	
  	
  	
  ON
	
  	
  	
  	
  	
  	
  	
  	
  	
  	
  	
  	
  	
  	
  	
  	
  tab1.unique#	
  =	
  tab2.unique#	
  
	
  	
  	
  	
  	
  	
  	
  	
  AND	
  tab1.unique#	
  IN	
  (1,2)
	
  	
  	
  	
  	
  	
  	
  	
  INNER	
  JOIN	
  tab3
	
  	
  	
  	
  	
  	
  	
  	
  ON
	
  	
  	
  	
  	
  	
  	
  	
  	
  	
  	
  	
  	
  	
  	
  	
  tab2.unique#	
  =	
  tab3.unique#	
  
	
  	
  	
  	
  	
  	
  	
  	
  AND	
  tab2.branch#	
  =	
  tab3.branch#
	
  	
  	
  	
  	
  	
  	
  	
  INNER	
  JOIN	
  tab4
	
  	
  	
  	
  	
  	
  	
  	
  ON
	
  	
  	
  	
  	
  	
  	
  	
  	
  	
  	
  	
  	
  	
  	
  	
  tab3.unique#	
  =	
  tab4.unique#	
  
	
  	
  	
  	
  	
  	
  	
  	
  AND	
  tab3.branch#	
  =	
  tab4.branch#
	
  	
  	
  	
  	
  	
  	
  	
  AND	
  tab3.loc#	
  	
  	
  	
  =	
  tab4.loc#
;
13年11月16日土曜日
釣り上げたSQL文 (実行計画)
-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐
|	
  Id	
  	
  |	
  Operation	
  	
  	
  	
  	
  	
  	
  	
  	
  	
  	
  	
  	
  	
  	
  	
  	
  	
  	
  	
  |	
  Name	
  	
  	
  	
  |	
  Rows	
  	
  |	
  Bytes	
  |	
  Cost	
  (%CPU)|	
  Time	
  	
  	
  	
  	
  |	
  Inst	
  	
  	
  |IN-­‐OUT|
-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐
|	
  	
  	
  0	
  |	
  SELECT	
  STATEMENT	
  	
  	
  	
  	
  	
  	
  	
  	
  	
  	
  	
  	
  |	
  	
  	
  	
  	
  	
  	
  	
  	
  |	
  20000	
  |	
  	
  	
  	
  11M|	
  	
  	
  603	
  	
  	
  (0)|	
  00:00:01	
  |	
  	
  	
  	
  	
  	
  	
  	
  |	
  	
  	
  	
  	
  	
  |
|	
  	
  	
  1	
  |	
  	
  NESTED	
  LOOPS	
  	
  	
  	
  	
  	
  	
  	
  	
  	
  	
  	
  	
  	
  	
  	
  |	
  	
  	
  	
  	
  	
  	
  	
  	
  |	
  	
  	
  	
  	
  	
  	
  |	
  	
  	
  	
  	
  	
  	
  |	
  	
  	
  	
  	
  	
  	
  	
  	
  	
  	
  	
  |	
  	
  	
  	
  	
  	
  	
  	
  	
  	
  |	
  	
  	
  	
  	
  	
  	
  	
  |	
  	
  	
  	
  	
  	
  |
|	
  	
  	
  2	
  |	
  	
  	
  NESTED	
  LOOPS	
  	
  	
  	
  	
  	
  	
  	
  	
  	
  	
  	
  	
  	
  	
  |	
  	
  	
  	
  	
  	
  	
  	
  	
  |	
  20000	
  |	
  	
  	
  	
  11M|	
  	
  	
  603	
  	
  	
  (0)|	
  00:00:01	
  |	
  	
  	
  	
  	
  	
  	
  	
  |	
  	
  	
  	
  	
  	
  |
|	
  	
  	
  3	
  |	
  	
  	
  	
  NESTED	
  LOOPS	
  	
  	
  	
  	
  	
  	
  	
  	
  	
  	
  	
  	
  	
  |	
  	
  	
  	
  	
  	
  	
  	
  	
  |	
  	
  	
  200	
  |	
  15600	
  |	
  	
  	
  	
  	
  3	
  	
  	
  (0)|	
  00:00:01	
  |	
  	
  	
  	
  	
  	
  	
  	
  |	
  	
  	
  	
  	
  	
  |
|	
  	
  	
  4	
  |	
  	
  	
  	
  	
  NESTED	
  LOOPS	
  	
  	
  	
  	
  	
  	
  	
  	
  	
  	
  	
  	
  |	
  	
  	
  	
  	
  	
  	
  	
  	
  |	
  	
  	
  200	
  |	
  13000	
  |	
  	
  	
  	
  	
  3	
  	
  	
  (0)|	
  00:00:01	
  |	
  	
  	
  	
  	
  	
  	
  	
  |	
  	
  	
  	
  	
  	
  |
|	
  	
  	
  5	
  |	
  	
  	
  	
  	
  	
  REMOTE	
  	
  	
  	
  	
  	
  	
  	
  	
  	
  	
  	
  	
  	
  	
  	
  	
  	
  |	
  TAB3	
  	
  	
  	
  |	
  	
  	
  200	
  |	
  	
  7800	
  |	
  	
  	
  	
  	
  3	
  	
  	
  (0)|	
  00:00:01	
  |	
  PDBOR~	
  |	
  R-­‐>S	
  |
|	
  	
  	
  6	
  |	
  	
  	
  	
  	
  	
  REMOTE	
  	
  	
  	
  	
  	
  	
  	
  	
  	
  	
  	
  	
  	
  	
  	
  	
  	
  |	
  TAB2	
  	
  	
  	
  |	
  	
  	
  	
  	
  1	
  |	
  	
  	
  	
  26	
  |	
  	
  	
  	
  	
  0	
  	
  	
  (0)|	
  00:00:01	
  |	
  PDBOR~	
  |	
  R-­‐>S	
  |
|	
  	
  	
  7	
  |	
  	
  	
  	
  	
  REMOTE	
  	
  	
  	
  	
  	
  	
  	
  	
  	
  	
  	
  	
  	
  	
  	
  	
  	
  	
  |	
  TAB1	
  	
  	
  	
  |	
  	
  	
  	
  	
  1	
  |	
  	
  	
  	
  13	
  |	
  	
  	
  	
  	
  0	
  	
  	
  (0)|	
  00:00:01	
  |	
  PDBOR~	
  |	
  R-­‐>S	
  |
|*	
  	
  8	
  |	
  	
  	
  	
  INDEX	
  RANGE	
  SCAN	
  	
  	
  	
  	
  	
  	
  	
  	
  	
  |	
  PK_TAB4	
  |	
  	
  	
  	
  	
  1	
  |	
  	
  	
  	
  	
  	
  	
  |	
  	
  	
  	
  	
  2	
  	
  	
  (0)|	
  00:00:01	
  |	
  	
  	
  	
  	
  	
  	
  	
  |	
  	
  	
  	
  	
  	
  |
|	
  	
  	
  9	
  |	
  	
  	
  TABLE	
  ACCESS	
  BY	
  INDEX	
  ROWID|	
  TAB4	
  	
  	
  	
  |	
  	
  	
  100	
  |	
  51400	
  |	
  	
  	
  	
  	
  3	
  	
  	
  (0)|	
  00:00:01	
  |	
  	
  	
  	
  	
  	
  	
  	
  |	
  	
  	
  	
  	
  	
  |
-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐
Predicate	
  Information	
  (identified	
  by	
  operation	
  id):
-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐
	
  	
  	
  8	
  -­‐	
  access("TAB3"."UNIQUE#"="TAB4"."UNIQUE#"	
  AND	
  "TAB3"."BRANCH#"="TAB4"."BRANCH#"	
  AND
	
  	
  	
  	
  	
  	
  	
  	
  	
  	
  	
  	
  	
  	
  "TAB3"."LOC#"="TAB4"."LOC#")
	
  	
  	
  	
  	
  	
  	
  filter("TAB4"."UNIQUE#"=1	
  OR	
  "TAB4"."UNIQUE#"=2)

13年11月16日土曜日
釣り上げたSQL文 (実行計画)
-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐
|	
  Id	
  	
  |	
  Operation	
  	
  	
  	
  	
  	
  	
  	
  	
  	
  	
  	
  	
  	
  	
  	
  	
  	
  	
  	
  |	
  Name	
  	
  	
  	
  |	
  Rows	
  	
  |	
  Bytes	
  |	
  Cost	
  (%CPU)|	
  Time	
  	
  	
  	
  	
  |	
  Inst	
  	
  	
  |IN-­‐OUT|
-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐
|	
  	
  	
  0	
  |	
  SELECT	
  STATEMENT	
  	
  	
  	
  	
  	
  	
  	
  	
  	
  	
  	
  	
  |	
  	
  	
  	
  	
  	
  	
  	
  	
  |	
  20000	
  |	
  	
  	
  	
  11M|	
  	
  	
  603	
  	
  	
  (0)|	
  00:00:01	
  |	
  	
  	
  	
  	
  	
  	
  	
  |	
  	
  	
  	
  	
  	
  |
|	
  	
  	
  1	
  |	
  	
  NESTED	
  LOOPS	
  	
  	
  	
  	
  	
  	
  	
  	
  	
  	
  	
  	
  	
  	
  	
  |	
  	
  	
  	
  	
  	
  	
  	
  	
  |	
  	
  	
  	
  	
  	
  	
  |	
  	
  	
  	
  	
  	
  	
  |	
  	
  	
  	
  	
  	
  	
  	
  	
  	
  	
  	
  |	
  	
  	
  	
  	
  	
  	
  	
  	
  	
  |	
  	
  	
  	
  	
  	
  	
  	
  |	
  	
  	
  	
  	
  	
  |
|	
  	
  	
  2	
  |	
  	
  	
  NESTED	
  LOOPS	
  	
  	
  	
  	
  	
  	
  	
  	
  	
  	
  	
  	
  	
  	
  |	
  	
  	
  	
  	
  	
  	
  	
  	
  |	
  20000	
  |	
  	
  	
  	
  11M|	
  	
  	
  603	
  	
  	
  (0)|	
  00:00:01	
  |	
  	
  	
  	
  	
  	
  	
  	
  |	
  	
  	
  	
  	
  	
  |
|	
  	
  	
  3	
  |	
  	
  	
  	
  NESTED	
  LOOPS	
  	
  	
  	
  	
  	
  	
  	
  	
  	
  	
  	
  	
  	
  |	
  	
  	
  	
  	
  	
  	
  	
  	
  |	
  	
  	
  200	
  |	
  15600	
  |	
  	
  	
  	
  	
  3	
  	
  	
  (0)|	
  00:00:01	
  |	
  	
  	
  	
  	
  	
  	
  	
  |	
  	
  	
  	
  	
  	
  |
|	
  	
  	
  4	
  |	
  	
  	
  	
  	
  NESTED	
  LOOPS	
  	
  	
  	
  	
  	
  	
  	
  	
  	
  	
  	
  	
  |	
  	
  	
  	
  	
  	
  	
  	
  	
  |	
  	
  	
  200	
  |	
  13000	
  |	
  	
  	
  	
  	
  3	
  	
  	
  (0)|	
  00:00:01	
  |	
  	
  	
  	
  	
  	
  	
  	
  |	
  	
  	
  	
  	
  	
  |
|	
  	
  	
  5	
  |	
  	
  	
  	
  	
  	
  REMOTE	
  	
  	
  	
  	
  	
  	
  	
  	
  	
  	
  	
  	
  	
  	
  	
  	
  	
  |	
  TAB3	
  	
  	
  	
  |	
  	
  	
  200	
  |	
  	
  7800	
  |	
  	
  	
  	
  	
  3	
  	
  	
  (0)|	
  00:00:01	
  |	
  PDBOR~	
  |	
  R-­‐>S	
  |
|	
  	
  	
  6	
  |	
  	
  	
  	
  	
  	
  REMOTE	
  	
  	
  	
  	
  	
  	
  	
  	
  	
  	
  	
  	
  	
  	
  	
  	
  	
  |	
  TAB2	
  	
  	
  	
  |	
  	
  	
  	
  	
  1	
  |	
  	
  	
  	
  26	
  |	
  	
  	
  	
  	
  0	
  	
  	
  (0)|	
  00:00:01	
  |	
  PDBOR~	
  |	
  R-­‐>S	
  |
|	
  	
  	
  7	
  |	
  	
  	
  	
  	
  REMOTE	
  	
  	
  	
  	
  	
  	
  	
  	
  	
  	
  	
  	
  	
  	
  	
  	
  	
  	
  |	
  TAB1	
  	
  	
  	
  |	
  	
  	
  	
  	
  1	
  |	
  	
  	
  	
  13	
  |	
  	
  	
  	
  	
  0	
  	
  	
  (0)|	
  00:00:01	
  |	
  PDBOR~	
  |	
  R-­‐>S	
  |
|*	
  	
  8	
  |	
  	
  	
  	
  INDEX	
  RANGE	
  SCAN	
  	
  	
  	
  	
  	
  	
  	
  	
  	
  |	
  PK_TAB4	
  |	
  	
  	
  	
  	
  1	
  |	
  	
  	
  	
  	
  	
  	
  |	
  	
  	
  	
  	
  2	
  	
  	
  (0)|	
  00:00:01	
  |	
  	
  	
  	
  	
  	
  	
  	
  |	
  	
  	
  	
  	
  	
  |
|	
  	
  	
  9	
  |	
  	
  	
  TABLE	
  ACCESS	
  BY	
  INDEX	
  ROWID|	
  TAB4	
  	
  	
  	
  |	
  	
  	
  100	
  |	
  51400	
  |	
  	
  	
  	
  	
  3	
  	
  	
  (0)|	
  00:00:01	
  |	
  	
  	
  	
  	
  	
  	
  	
  |	
  	
  	
  	
  	
  	
  |
-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐
Predicate	
  Information	
  (identified	
  by	
  operation	
  id):
-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐
	
  	
  	
  8	
  -­‐	
  access("TAB3"."UNIQUE#"="TAB4"."UNIQUE#"	
  AND	
  "TAB3"."BRANCH#"="TAB4"."BRANCH#"	
  AND
	
  	
  	
  	
  	
  	
  	
  	
  	
  	
  	
  	
  	
  	
  "TAB3"."LOC#"="TAB4"."LOC#")
	
  	
  	
  	
  	
  	
  	
  filter("TAB4"."UNIQUE#"=1	
  OR	
  "TAB4"."UNIQUE#"=2)

13年11月16日土曜日
釣り上げたSQL文 (DB Link..)
●USER_DB_LINKSより
DB_LINK	
  	
  	
  	
  USERNAME	
  	
  	
  HOST
-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐	
  -­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐	
  -­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐
PDBORCL_R	
  	
  SCOTT	
  	
  	
  	
  	
  	
  PDBORCL_R
●USER_SYNONYMSより
SYNONYM_NAME	
  	
  	
  	
  	
  	
  	
  	
  	
  TABLE_NAME	
  	
  	
  DB_LINK
-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐	
  -­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐	
  -­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐
TAB1	
  	
  	
  	
  	
  	
  	
  	
  	
  	
  	
  	
  	
  	
  	
  	
  	
  TAB1	
  	
  	
  	
  	
  	
  	
  	
  	
  PDBORCL_R
TAB2	
  	
  	
  	
  	
  	
  	
  	
  	
  	
  	
  	
  	
  	
  	
  	
  	
  TAB2	
  	
  	
  	
  	
  	
  	
  	
  	
  PDBORCL_R
TAB3	
  	
  	
  	
  	
  	
  	
  	
  	
  	
  	
  	
  	
  	
  	
  	
  	
  TAB3	
  	
  	
  	
  	
  	
  	
  	
  	
  PDBORCL_R

13年11月16日土曜日
釣り上げたSQL文 (DB Link..)
●USER_DB_LINKSより
DB_LINK	
  	
  	
  	
  USERNAME	
  	
  	
  HOST
-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐	
  -­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐	
  -­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐
PDBORCL_R	
  	
  SCOTT	
  	
  	
  	
  	
  	
  PDBORCL_R

DB Link先は1つで
3表が同一リモートデ
ータベースに存在する

●USER_SYNONYMSより
SYNONYM_NAME	
  	
  	
  	
  	
  	
  	
  	
  	
  TABLE_NAME	
  	
  	
  DB_LINK
-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐	
  -­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐	
  -­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐
TAB1	
  	
  	
  	
  	
  	
  	
  	
  	
  	
  	
  	
  	
  	
  	
  	
  	
  TAB1	
  	
  	
  	
  	
  	
  	
  	
  	
  PDBORCL_R
TAB2	
  	
  	
  	
  	
  	
  	
  	
  	
  	
  	
  	
  	
  	
  	
  	
  	
  TAB2	
  	
  	
  	
  	
  	
  	
  	
  	
  PDBORCL_R
TAB3	
  	
  	
  	
  	
  	
  	
  	
  	
  	
  	
  	
  	
  	
  	
  	
  	
  TAB3	
  	
  	
  	
  	
  	
  	
  	
  	
  PDBORCL_R

13年11月16日土曜日
釣り上げたSQL文 (表の配置)

13年11月16日土曜日
釣り上げたSQL文 (表の配置)
リモート表の3
表は同一インスタ
ンスにある

問題のSQL文は
このインスタンス
から実行される。
13年11月16日土曜日
釣り上げたSQL文 (実行計画)
-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐
|	
  Id	
  	
  |	
  Operation	
  	
  	
  	
  	
  	
  	
  	
  	
  	
  	
  	
  	
  	
  	
  	
  	
  	
  	
  	
  |	
  Name	
  	
  	
  	
  |	
  Rows	
  	
  |	
  Bytes	
  |	
  Cost	
  (%CPU)|	
  Time	
  	
  	
  	
  	
  |	
  Inst	
  	
  	
  |IN-­‐OUT|
-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐
|	
  	
  	
  0	
  |	
  SELECT	
  STATEMENT	
  	
  	
  	
  	
  	
  	
  	
  	
  	
  	
  	
  	
  |	
  	
  	
  	
  	
  	
  	
  	
  	
  |	
  20000	
  |	
  	
  	
  	
  11M|	
  	
  	
  603	
  	
  	
  (0)|	
  00:00:01	
  |	
  	
  	
  	
  	
  	
  	
  	
  |	
  	
  	
  	
  	
  	
  |
|	
  	
  	
  1	
  |	
  	
  NESTED	
  LOOPS	
  	
  	
  	
  	
  	
  	
  	
  	
  	
  	
  	
  	
  	
  	
  	
  |	
  	
  	
  	
  	
  	
  	
  	
  	
  |	
  	
  	
  	
  	
  	
  	
  |	
  	
  	
  	
  	
  	
  	
  |	
  	
  	
  	
  	
  	
  	
  	
  	
  	
  	
  	
  |	
  	
  	
  	
  	
  	
  	
  	
  	
  	
  |	
  	
  	
  	
  	
  	
  	
  	
  |	
  	
  	
  	
  	
  	
  |
|	
  	
  	
  2	
  |	
  	
  	
  NESTED	
  LOOPS	
  	
  	
  	
  	
  	
  	
  	
  	
  	
  	
  	
  	
  	
  	
  |	
  	
  	
  	
  	
  	
  	
  	
  	
  |	
  20000	
  |	
  	
  	
  	
  11M|	
  	
  	
  603	
  	
  	
  (0)|	
  00:00:01	
  |	
  	
  	
  	
  	
  	
  	
  	
  |	
  	
  	
  	
  	
  	
  |
|	
  	
  	
  3	
  |	
  	
  	
  	
  NESTED	
  LOOPS	
  	
  	
  	
  	
  	
  	
  	
  	
  	
  	
  	
  	
  	
  |	
  	
  	
  	
  	
  	
  	
  	
  	
  |	
  	
  	
  200	
  |	
  15600	
  |	
  	
  	
  	
  	
  3	
  	
  	
  (0)|	
  00:00:01	
  |	
  	
  	
  	
  	
  	
  	
  	
  |	
  	
  	
  	
  	
  	
  |
|	
  	
  	
  4	
  |	
  	
  	
  	
  	
  NESTED	
  LOOPS	
  	
  	
  	
  	
  	
  	
  	
  	
  	
  	
  	
  	
  |	
  	
  	
  	
  	
  	
  	
  	
  	
  |	
  	
  	
  200	
  |	
  13000	
  |	
  	
  	
  	
  	
  3	
  	
  	
  (0)|	
  00:00:01	
  |	
  	
  	
  	
  	
  	
  	
  	
  |	
  	
  	
  	
  	
  	
  |
|	
  	
  	
  5	
  |	
  	
  	
  	
  	
  	
  REMOTE	
  	
  	
  	
  	
  	
  	
  	
  	
  	
  	
  	
  	
  	
  	
  	
  	
  	
  |	
  TAB3	
  	
  	
  	
  |	
  	
  	
  200	
  |	
  	
  7800	
  |	
  	
  	
  	
  	
  3	
  	
  	
  (0)|	
  00:00:01	
  |	
  PDBOR~	
  |	
  R-­‐>S	
  |
|	
  	
  	
  6	
  |	
  	
  	
  	
  	
  	
  REMOTE	
  	
  	
  	
  	
  	
  	
  	
  	
  	
  	
  	
  	
  	
  	
  	
  	
  	
  |	
  TAB2	
  	
  	
  	
  |	
  	
  	
  	
  	
  1	
  |	
  	
  	
  	
  26	
  |	
  	
  	
  	
  	
  0	
  	
  	
  (0)|	
  00:00:01	
  |	
  PDBOR~	
  |	
  R-­‐>S	
  |
|	
  	
  	
  7	
  |	
  	
  	
  	
  	
  REMOTE	
  	
  	
  	
  	
  	
  	
  	
  	
  	
  	
  	
  	
  	
  	
  	
  	
  	
  	
  |	
  TAB1	
  	
  	
  	
  |	
  	
  	
  	
  	
  1	
  |	
  	
  	
  	
  13	
  |	
  	
  	
  	
  	
  0	
  	
  	
  (0)|	
  00:00:01	
  |	
  PDBOR~	
  |	
  R-­‐>S	
  |
|*	
  	
  8	
  |	
  	
  	
  	
  INDEX	
  RANGE	
  SCAN	
  	
  	
  	
  	
  	
  	
  	
  	
  	
  |	
  PK_TAB4	
  |	
  	
  	
  	
  	
  1	
  |	
  	
  	
  	
  	
  	
  	
  |	
  	
  	
  	
  	
  2	
  	
  	
  (0)|	
  00:00:01	
  |	
  	
  	
  	
  	
  	
  	
  	
  |	
  	
  	
  	
  	
  	
  |
|	
  	
  	
  9	
  |	
  	
  	
  TABLE	
  ACCESS	
  BY	
  INDEX	
  ROWID|	
  TAB4	
  	
  	
  	
  |	
  	
  	
  100	
  |	
  51400	
  |	
  	
  	
  	
  	
  3	
  	
  	
  (0)|	
  00:00:01	
  |	
  	
  	
  	
  	
  	
  	
  	
  |	
  	
  	
  	
  	
  	
  |
-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐
Predicate	
  Information	
  (identified	
  by	
  operation	
  id):
-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐
	
  	
  	
  8	
  -­‐	
  access("TAB3"."UNIQUE#"="TAB4"."UNIQUE#"	
  AND	
  "TAB3"."BRANCH#"="TAB4"."BRANCH#"	
  AND
	
  	
  	
  	
  	
  	
  	
  	
  	
  	
  	
  	
  	
  	
  "TAB3"."LOC#"="TAB4"."LOC#")
	
  	
  	
  	
  	
  	
  	
  filter("TAB4"."UNIQUE#"=1	
  OR	
  "TAB4"."UNIQUE#"=2)

13年11月16日土曜日
釣り上げたSQL文 (実行計画)
-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐
|	
  Id	
  	
  |	
  Operation	
  	
  	
  	
  	
  	
  	
  	
  	
  	
  	
  	
  	
  	
  	
  	
  	
  	
  	
  	
  |	
  Name	
  	
  	
  	
  |	
  Rows	
  	
  |	
  Bytes	
  |	
  Cost	
  (%CPU)|	
  Time	
  	
  	
  	
  	
  |	
  Inst	
  	
  	
  |IN-­‐OUT|
-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐
|	
  	
  	
  0	
  |	
  SELECT	
  STATEMENT	
  	
  	
  	
  	
  	
  	
  	
  	
  	
  	
  	
  	
  |	
  	
  	
  	
  	
  	
  	
  	
  	
  |	
  20000	
  |	
  	
  	
  	
  11M|	
  	
  	
  603	
  	
  	
  (0)|	
  00:00:01	
  |	
  	
  	
  	
  	
  	
  	
  	
  |	
  	
  	
  	
  	
  	
  |
|	
  	
  	
  1	
  |	
  	
  NESTED	
  LOOPS	
  	
  	
  	
  	
  	
  	
  	
  	
  	
  	
  	
  	
  	
  	
  	
  |	
  	
  	
  	
  	
  	
  	
  	
  	
  |	
  	
  	
  	
  	
  	
  	
  |	
  	
  	
  	
  	
  	
  	
  |	
  	
  	
  	
  	
  	
  	
  	
  	
  	
  	
  	
  |	
  	
  	
  	
  	
  	
  	
  	
  	
  	
  |	
  	
  	
  	
  	
  	
  	
  	
  |	
  	
  	
  	
  	
  	
  |
|	
  	
  	
  2	
  |	
  	
  	
  NESTED	
  LOOPS	
  	
  	
  	
  	
  	
  	
  	
  	
  	
  	
  	
  	
  	
  	
  |	
  	
  	
  	
  	
  	
  	
  	
  	
  |	
  20000	
  |	
  	
  	
  	
  11M|	
  	
  	
  603	
  	
  	
  (0)|	
  00:00:01	
  |	
  	
  	
  	
  	
  	
  	
  	
  |	
  	
  	
  	
  	
  	
  |
|	
  	
  	
  3	
  |	
  	
  	
  	
  NESTED	
  LOOPS	
  	
  	
  	
  	
  	
  	
  	
  	
  	
  	
  	
  	
  	
  |	
  	
  	
  	
  	
  	
  	
  	
  	
  |	
  	
  	
  200	
  |	
  15600	
  |	
  	
  	
  	
  	
  3	
  	
  	
  (0)|	
  00:00:01	
  |	
  	
  	
  	
  	
  	
  	
  	
  |	
  	
  	
  	
  	
  	
  |
|	
  	
  	
  4	
  |	
  	
  	
  	
  	
  NESTED	
  LOOPS	
  	
  	
  	
  	
  	
  	
  	
  	
  	
  	
  	
  	
  |	
  	
  	
  	
  	
  	
  	
  	
  	
  |	
  	
  	
  200	
  |	
  13000	
  |	
  	
  	
  	
  	
  3	
  	
  	
  (0)|	
  00:00:01	
  |	
  	
  	
  	
  	
  	
  	
  	
  |	
  	
  	
  	
  	
  	
  |
|	
  	
  	
  5	
  |	
  	
  	
  	
  	
  	
  REMOTE	
  	
  	
  	
  	
  	
  	
  	
  	
  	
  	
  	
  	
  	
  	
  	
  	
  	
  |	
  TAB3	
  	
  	
  	
  |	
  	
  	
  200	
  |	
  	
  7800	
  |	
  	
  	
  	
  	
  3	
  	
  	
  (0)|	
  00:00:01	
  |	
  PDBOR~	
  |	
  R-­‐>S	
  |
|	
  	
  	
  6	
  |	
  	
  	
  	
  	
  	
  REMOTE	
  	
  	
  	
  	
  	
  	
  	
  	
  	
  	
  	
  	
  	
  	
  	
  	
  	
  |	
  TAB2	
  	
  	
  	
  |	
  	
  	
  	
  	
  1	
  |	
  	
  	
  	
  26	
  |	
  	
  	
  	
  	
  0	
  	
  	
  (0)|	
  00:00:01	
  |	
  PDBOR~	
  |	
  R-­‐>S	
  |
|	
  	
  	
  7	
  |	
  	
  	
  	
  	
  REMOTE	
  	
  	
  	
  	
  	
  	
  	
  	
  	
  	
  	
  	
  	
  	
  	
  	
  	
  	
  |	
  TAB1	
  	
  	
  	
  |	
  	
  	
  	
  	
  1	
  |	
  	
  	
  	
  13	
  |	
  	
  	
  	
  	
  0	
  	
  	
  (0)|	
  00:00:01	
  |	
  PDBOR~	
  |	
  R-­‐>S	
  |
|*	
  	
  8	
  |	
  	
  	
  	
  INDEX	
  RANGE	
  SCAN	
  	
  	
  	
  	
  	
  	
  	
  	
  	
  |	
  PK_TAB4	
  |	
  	
  	
  	
  	
  1	
  |	
  	
  	
  	
  	
  	
  	
  |	
  	
  	
  	
  	
  2	
  	
  	
  (0)|	
  00:00:01	
  |	
  	
  	
  	
  	
  	
  	
  	
  |	
  	
  	
  	
  	
  	
  |
|	
  	
  	
  9	
  |	
  	
  	
  TABLE	
  ACCESS	
  BY	
  INDEX	
  ROWID|	
  TAB4	
  	
  	
  	
  |	
  	
  	
  100	
  |	
  51400	
  |	
  	
  	
  	
  	
  3	
  	
  	
  (0)|	
  00:00:01	
  |	
  	
  	
  	
  	
  	
  	
  	
  |	
  	
  	
  	
  	
  	
  |
-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐
Predicate	
  Information	
  (identified	
  by	
  operation	
  id):
-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐

この実行計画はローカルデー

	
  	
  	
  8	
  -­‐	
  access("TAB3"."UNIQUE#"="TAB4"."UNIQUE#"	
  AND	
  "TAB3"."BRANCH#"="TAB4"."BRANCH#"	
  AND
	
  	
  	
  	
  	
  	
  	
  	
  	
  	
  	
  	
  	
  	
  "TAB3"."LOC#"="TAB4"."LOC#")
	
  	
  	
  	
  	
  	
  	
  filter("TAB4"."UNIQUE#"=1	
  OR	
  "TAB4"."UNIQUE#"=2)

タベースで取得されたもの

13年11月16日土曜日
リモートクエリーの実行計画
Remote	
  SQL	
  Information	
  (identified	
  by	
  operation	
  id):
-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐
	
  	
  	
  5	
  -­‐	
  SELECT	
  /*+	
  USE_NL	
  ("TAB3")	
  */	
  "UNIQUE#","BRANCH#"
	
  	
  	
  	
  	
  	
  	
  ,"LOC#"	
  FROM	
  "TAB3"	
  "TAB3"	
  WHERE
	
  	
  	
  	
  	
  	
  	
  "UNIQUE#"=1	
  OR	
  "UNIQUE#"=2	
  (accessing	
  'PDBORCL_R'	
  )
	
  	
  	
  6	
  -­‐	
  SELECT	
  /*+	
  USE_NL	
  ("TAB2")	
  */	
  "UNIQUE#","BRANCH#"	
  
	
  	
  	
  	
  	
  	
  	
  	
  FROM	
  "TAB2"	
  "TAB2"	
  WHERE	
  "BRANCH#"=:1
	
  	
  	
  	
  	
  	
  	
  	
  AND	
  "UNIQUE#"=:2	
  AND	
  ("UNIQUE#"=1	
  OR	
  "UNIQUE#"=2)	
  
	
  	
  	
  	
  	
  	
  	
  	
  (accessing	
  'PDBORCL_R'	
  )
	
  	
  	
  7	
  -­‐	
  SELECT	
  /*+	
  USE_NL	
  ("TAB1")	
  */	
  "UNIQUE#"	
  
	
  	
  	
  	
  	
  	
  	
  	
  FROM	
  "TAB1"	
  "TAB1"	
  WHERE	
  "UNIQUE#"=:1	
  AND
	
  	
  	
  	
  	
  	
  	
  	
  ("UNIQUE#"=1	
  OR	
  "UNIQUE#"=2)	
  (accessing	
  'PDBORCL_R'	
  )

explain plan文などでオプティマイザーが
切り出したリモートクエリーを確認
13年11月16日土曜日
リモートクエリーの実行計画
Remote	
  SQL	
  Information	
  (identified	
  by	
  operation	
  id):
-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐
	
  	
  	
  5	
  -­‐	
  SELECT	
  /*+	
  USE_NL	
  ("TAB3")	
  */	
  "UNIQUE#","BRANCH#"
	
  	
  	
  	
  	
  	
  	
  ,"LOC#"	
  FROM	
  "TAB3"	
  "TAB3"	
  WHERE
	
  	
  	
  	
  	
  	
  	
  "UNIQUE#"=1	
  OR	
  "UNIQUE#"=2	
  (accessing	
  'PDBORCL_R'	
  )
	
  	
  	
  6	
  -­‐	
  SELECT	
  /*+	
  USE_NL	
  ("TAB2")	
  */	
  "UNIQUE#","BRANCH#"	
  
	
  	
  	
  	
  	
  	
  	
  	
  FROM	
  "TAB2"	
  "TAB2"	
  WHERE	
  "BRANCH#"=:1
	
  	
  	
  	
  	
  	
  	
  	
  AND	
  "UNIQUE#"=:2	
  AND	
  ("UNIQUE#"=1	
  OR	
  "UNIQUE#"=2)	
  
	
  	
  	
  	
  	
  	
  	
  	
  (accessing	
  'PDBORCL_R'	
  )
	
  	
  	
  7	
  -­‐	
  SELECT	
  /*+	
  USE_NL	
  ("TAB1")	
  */	
  "UNIQUE#"	
  
	
  	
  	
  	
  	
  	
  	
  	
  FROM	
  "TAB1"	
  "TAB1"	
  WHERE	
  "UNIQUE#"=:1	
  AND
	
  	
  	
  	
  	
  	
  	
  	
  ("UNIQUE#"=1	
  OR	
  "UNIQUE#"=2)	
  (accessing	
  'PDBORCL_R'	
  )

これらのSQL文はリモートデータベースで実
行されるため、実行計画はリモートデータベ
ース上で確認する必要がある。
13年11月16日土曜日
リモートクエリーの
実行計画①
Remote	
  SQL	
  Information	
  (identified	
  by	
  operation	
  id):
-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐
	
  	
  	
  5	
  -­‐	
  SELECT	
  /*+	
  USE_NL	
  ("TAB3")	
  */	
  "UNIQUE#","BRANCH#"
	
  	
  	
  	
  	
  	
  	
  ,"LOC#"	
  FROM	
  "TAB3"	
  "TAB3"	
  WHERE
	
  	
  	
  	
  	
  	
  	
  "UNIQUE#"=1	
  OR	
  "UNIQUE#"=2	
  (accessing	
  'PDBORCL_R'	
  )

-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐
|	
  Id	
  	
  |	
  Operation	
  	
  	
  	
  	
  	
  	
  	
  	
  |	
  Name	
  	
  	
  	
  |	
  Rows	
  	
  |	
  Bytes	
  |	
  Cost	
  (%CPU)|	
  Time	
  	
  	
  	
  	
  |
-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐
|	
  	
  	
  0	
  |	
  SELECT	
  STATEMENT	
  	
  |	
  	
  	
  	
  	
  	
  	
  	
  	
  |	
  	
  	
  200	
  |	
  	
  2000	
  |	
  	
  	
  	
  	
  3	
  	
  	
  (0)|	
  00:00:01	
  |
|	
  	
  	
  1	
  |	
  	
  INLIST	
  ITERATOR	
  	
  |	
  	
  	
  	
  	
  	
  	
  	
  	
  |	
  	
  	
  	
  	
  	
  	
  |	
  	
  	
  	
  	
  	
  	
  |	
  	
  	
  	
  	
  	
  	
  	
  	
  	
  	
  	
  |	
  	
  	
  	
  	
  	
  	
  	
  	
  	
  |
|*	
  	
  2	
  |	
  	
  	
  INDEX	
  RANGE	
  SCAN|	
  PK_TAB3	
  |	
  	
  	
  200	
  |	
  	
  2000	
  |	
  	
  	
  	
  	
  3	
  	
  	
  (0)|	
  00:00:01	
  |
-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐

13年11月16日土曜日
リモートクエリーの
実行計画①
Remote	
  SQL	
  Information	
  (identified	
  by	
  operation	
  id):
-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐
	
  	
  	
  5	
  -­‐	
  SELECT	
  /*+	
  USE_NL	
  ("TAB3")	
  */	
  "UNIQUE#","BRANCH#"
	
  	
  	
  	
  	
  	
  	
  ,"LOC#"	
  FROM	
  "TAB3"	
  "TAB3"	
  WHERE
	
  	
  	
  	
  	
  	
  	
  "UNIQUE#"=1	
  OR	
  "UNIQUE#"=2	
  (accessing	
  'PDBORCL_R'	
  )

-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐
|	
  Id	
  	
  |	
  Operation	
  	
  	
  	
  	
  	
  	
  	
  	
  |	
  Name	
  	
  	
  	
  |	
  Rows	
  	
  |	
  Bytes	
  |	
  Cost	
  (%CPU)|	
  Time	
  	
  	
  	
  	
  |
-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐
|	
  	
  	
  0	
  |	
  SELECT	
  STATEMENT	
  	
  |	
  	
  	
  	
  	
  	
  	
  	
  	
  |	
  	
  	
  200	
  |	
  	
  2000	
  |	
  	
  	
  	
  	
  3	
  	
  	
  (0)|	
  00:00:01	
  |
|	
  	
  	
  1	
  |	
  	
  INLIST	
  ITERATOR	
  	
  |	
  	
  	
  	
  	
  	
  	
  	
  	
  |	
  	
  	
  	
  	
  	
  	
  |	
  	
  	
  	
  	
  	
  	
  |	
  	
  	
  	
  	
  	
  	
  	
  	
  	
  	
  	
  |	
  	
  	
  	
  	
  	
  	
  	
  	
  	
  |
|*	
  	
  2	
  |	
  	
  	
  INDEX	
  RANGE	
  SCAN|	
  PK_TAB3	
  |	
  	
  	
  200	
  |	
  	
  2000	
  |	
  	
  	
  	
  	
  3	
  	
  	
  (0)|	
  00:00:01	
  |
-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐
チューニングが必要だとは
思えない...

13年11月16日土曜日
リモートクエリーの
実行計画②
Remote	
  SQL	
  Information	
  (identified	
  by	
  operation	
  id):
-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐
	
  	
  	
  	
  6	
  -­‐	
  SELECT	
  /*+	
  USE_NL	
  ("TAB2")	
  */	
  "UNIQUE#","BRANCH#"	
  
	
  	
  	
  	
  	
  	
  	
  	
  FROM	
  "TAB2"	
  "TAB2"	
  WHERE	
  "BRANCH#"=:1
	
  	
  	
  	
  	
  	
  	
  	
  AND	
  "UNIQUE#"=:2	
  AND	
  ("UNIQUE#"=1	
  OR	
  "UNIQUE#"=2)	
  
	
  	
  	
  	
  	
  	
  	
  	
  (accessing	
  'PDBORCL_R'	
  )
-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐
|	
  Id	
  	
  |	
  Operation	
  	
  	
  	
  	
  	
  	
  	
  	
  	
  |	
  Name	
  	
  	
  	
  |	
  Rows	
  	
  |	
  Bytes	
  |	
  Cost	
  (%CPU)|	
  Time	
  	
  	
  	
  	
  |
-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐
|	
  	
  	
  0	
  |	
  SELECT	
  STATEMENT	
  	
  	
  |	
  	
  	
  	
  	
  	
  	
  	
  	
  |	
  	
  	
  	
  	
  1	
  |	
  	
  	
  	
  	
  7	
  |	
  	
  	
  	
  	
  1	
  	
  	
  (0)|	
  00:00:01	
  |
|*	
  	
  1	
  |	
  	
  FILTER	
  	
  	
  	
  	
  	
  	
  	
  	
  	
  	
  	
  |	
  	
  	
  	
  	
  	
  	
  	
  	
  |	
  	
  	
  	
  	
  	
  	
  |	
  	
  	
  	
  	
  	
  	
  |	
  	
  	
  	
  	
  	
  	
  	
  	
  	
  	
  	
  |	
  	
  	
  	
  	
  	
  	
  	
  	
  	
  |
|*	
  	
  2	
  |	
  	
  	
  INDEX	
  UNIQUE	
  SCAN|	
  PK_TAB2	
  |	
  	
  	
  	
  	
  1	
  |	
  	
  	
  	
  	
  7	
  |	
  	
  	
  	
  	
  1	
  	
  	
  (0)|	
  00:00:01	
  |
-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐

13年11月16日土曜日
リモートクエリーの
実行計画②
Remote	
  SQL	
  Information	
  (identified	
  by	
  operation	
  id):
-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐
	
  	
  	
  	
  6	
  -­‐	
  SELECT	
  /*+	
  USE_NL	
  ("TAB2")	
  */	
  "UNIQUE#","BRANCH#"	
  
	
  	
  	
  	
  	
  	
  	
  	
  FROM	
  "TAB2"	
  "TAB2"	
  WHERE	
  "BRANCH#"=:1
	
  	
  	
  	
  	
  	
  	
  	
  AND	
  "UNIQUE#"=:2	
  AND	
  ("UNIQUE#"=1	
  OR	
  "UNIQUE#"=2)	
  
	
  	
  	
  	
  	
  	
  	
  	
  (accessing	
  'PDBORCL_R'	
  )
-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐
|	
  Id	
  	
  |	
  Operation	
  	
  	
  	
  	
  	
  	
  	
  	
  	
  |	
  Name	
  	
  	
  	
  |	
  Rows	
  	
  |	
  Bytes	
  |	
  Cost	
  (%CPU)|	
  Time	
  	
  	
  	
  	
  |
-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐
|	
  	
  	
  0	
  |	
  SELECT	
  STATEMENT	
  	
  	
  |	
  	
  	
  	
  	
  	
  	
  	
  	
  |	
  	
  	
  	
  	
  1	
  |	
  	
  	
  	
  	
  7	
  |	
  	
  	
  	
  	
  1	
  	
  	
  (0)|	
  00:00:01	
  |
|*	
  	
  1	
  |	
  	
  FILTER	
  	
  	
  	
  	
  	
  	
  	
  	
  	
  	
  	
  |	
  	
  	
  	
  	
  	
  	
  	
  	
  |	
  	
  	
  	
  	
  	
  	
  |	
  	
  	
  	
  	
  	
  	
  |	
  	
  	
  	
  	
  	
  	
  	
  	
  	
  	
  	
  |	
  	
  	
  	
  	
  	
  	
  	
  	
  	
  |
|*	
  	
  2	
  |	
  	
  	
  INDEX	
  UNIQUE	
  SCAN|	
  PK_TAB2	
  |	
  	
  	
  	
  	
  1	
  |	
  	
  	
  	
  	
  7	
  |	
  	
  	
  	
  	
  1	
  	
  	
  (0)|	
  00:00:01	
  |
-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐
チューニングが必要だとは
思えない...

13年11月16日土曜日
リモートクエリーの
実行計画③
Remote	
  SQL	
  Information	
  (identified	
  by	
  operation	
  id):
-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐
	
  	
  7	
  -­‐	
  SELECT	
  /*+	
  USE_NL	
  ("TAB1")	
  */	
  "UNIQUE#"	
  
	
  	
  	
  	
  	
  	
  	
  	
  FROM	
  "TAB1"	
  "TAB1"	
  WHERE	
  "UNIQUE#"=:1	
  AND
	
  	
  	
  	
  	
  	
  	
  	
  ("UNIQUE#"=1	
  OR	
  "UNIQUE#"=2)	
  (accessing	
  'PDBORCL_R'	
  )

-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐
|	
  Id	
  	
  |	
  Operation	
  	
  	
  	
  	
  	
  	
  	
  	
  	
  |	
  Name	
  	
  	
  	
  |	
  Rows	
  	
  |	
  Bytes	
  |	
  Cost	
  (%CPU)|	
  Time	
  	
  	
  	
  	
  |
-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐
|	
  	
  	
  0	
  |	
  SELECT	
  STATEMENT	
  	
  	
  |	
  	
  	
  	
  	
  	
  	
  	
  	
  |	
  	
  	
  	
  	
  1	
  |	
  	
  	
  	
  	
  4	
  |	
  	
  	
  	
  	
  1	
  	
  	
  (0)|	
  00:00:01	
  |
|*	
  	
  1	
  |	
  	
  FILTER	
  	
  	
  	
  	
  	
  	
  	
  	
  	
  	
  	
  |	
  	
  	
  	
  	
  	
  	
  	
  	
  |	
  	
  	
  	
  	
  	
  	
  |	
  	
  	
  	
  	
  	
  	
  |	
  	
  	
  	
  	
  	
  	
  	
  	
  	
  	
  	
  |	
  	
  	
  	
  	
  	
  	
  	
  	
  	
  |
|*	
  	
  2	
  |	
  	
  	
  INDEX	
  UNIQUE	
  SCAN|	
  PK_TAB1	
  |	
  	
  	
  	
  	
  1	
  |	
  	
  	
  	
  	
  4	
  |	
  	
  	
  	
  	
  1	
  	
  	
  (0)|	
  00:00:01	
  |
-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐

13年11月16日土曜日
リモートクエリーの
実行計画③
Remote	
  SQL	
  Information	
  (identified	
  by	
  operation	
  id):
-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐
	
  	
  7	
  -­‐	
  SELECT	
  /*+	
  USE_NL	
  ("TAB1")	
  */	
  "UNIQUE#"	
  
	
  	
  	
  	
  	
  	
  	
  	
  FROM	
  "TAB1"	
  "TAB1"	
  WHERE	
  "UNIQUE#"=:1	
  AND
	
  	
  	
  	
  	
  	
  	
  	
  ("UNIQUE#"=1	
  OR	
  "UNIQUE#"=2)	
  (accessing	
  'PDBORCL_R'	
  )

-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐
|	
  Id	
  	
  |	
  Operation	
  	
  	
  	
  	
  	
  	
  	
  	
  	
  |	
  Name	
  	
  	
  	
  |	
  Rows	
  	
  |	
  Bytes	
  |	
  Cost	
  (%CPU)|	
  Time	
  	
  	
  	
  	
  |
-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐
|	
  	
  	
  0	
  |	
  SELECT	
  STATEMENT	
  	
  	
  |	
  	
  	
  	
  	
  	
  	
  	
  	
  |	
  	
  	
  	
  	
  1	
  |	
  	
  	
  	
  	
  4	
  |	
  	
  	
  	
  	
  1	
  	
  	
  (0)|	
  00:00:01	
  |
|*	
  	
  1	
  |	
  	
  FILTER	
  	
  	
  	
  	
  	
  	
  	
  	
  	
  	
  	
  |	
  	
  	
  	
  	
  	
  	
  	
  	
  |	
  	
  	
  	
  	
  	
  	
  |	
  	
  	
  	
  	
  	
  	
  |	
  	
  	
  	
  	
  	
  	
  	
  	
  	
  	
  	
  |	
  	
  	
  	
  	
  	
  	
  	
  	
  	
  |
|*	
  	
  2	
  |	
  	
  	
  INDEX	
  UNIQUE	
  SCAN|	
  PK_TAB1	
  |	
  	
  	
  	
  	
  1	
  |	
  	
  	
  	
  	
  4	
  |	
  	
  	
  	
  	
  1	
  	
  	
  (0)|	
  00:00:01	
  |
-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐
チューニングが必要だとは
思えない...

13年11月16日土曜日
リモートクエリーの分析結果
-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐
|	
  Id	
  	
  |	
  Operation	
  	
  	
  	
  	
  	
  	
  	
  	
  |	
  Name	
  	
  	
  	
  |	
  Rows	
  	
  |	
  Bytes	
  |	
  Cost	
  (%CPU)|	
  Time	
  	
  	
  	
  	
  |
-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐
|	
  	
  	
  0	
  |	
  SELECT	
  STATEMENT	
  	
  |	
  	
  	
  	
  	
  	
  	
  	
  	
  |	
  	
  	
  200	
  |	
  	
  2000	
  |	
  	
  	
  	
  	
  3	
  	
  	
  (0)|	
  00:00:01	
  |
|	
  	
  	
  1	
  |	
  	
  INLIST	
  ITERATOR	
  	
  |	
  	
  	
  	
  	
  	
  	
  	
  	
  |	
  	
  	
  	
  	
  	
  	
  |	
  	
  	
  	
  	
  	
  	
  |	
  	
  	
  	
  	
  	
  	
  	
  	
  	
  	
  	
  |	
  	
  	
  	
  	
  	
  	
  	
  	
  	
  |
|*	
  	
  2	
  |	
  	
  	
  INDEX	
  RANGE	
  SCAN|	
  PK_TAB3	
  |	
  	
  	
  200	
  |	
  	
  2000	
  |	
  	
  	
  	
  	
  3	
  	
  	
  (0)|	
  00:00:01	
  |
-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐
-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐
|	
  Id	
  	
  |	
  Operation	
  	
  	
  	
  	
  	
  	
  	
  	
  	
  |	
  Name	
  	
  	
  	
  |	
  Rows	
  	
  |	
  Bytes	
  |	
  Cost	
  (%CPU)|	
  Time	
  	
  	
  	
  	
  |
-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐
|	
  	
  	
  0	
  |	
  SELECT	
  STATEMENT	
  	
  	
  |	
  	
  	
  	
  	
  	
  	
  	
  	
  |	
  	
  	
  	
  	
  1	
  |	
  	
  	
  	
  	
  7	
  |	
  	
  	
  	
  	
  1	
  	
  	
  (0)|	
  00:00:01	
  |
|*	
  	
  1	
  |	
  	
  FILTER	
  	
  	
  	
  	
  	
  	
  	
  	
  	
  	
  	
  |	
  	
  	
  	
  	
  	
  	
  	
  	
  |	
  	
  	
  	
  	
  	
  	
  |	
  	
  	
  	
  	
  	
  	
  |	
  	
  	
  	
  	
  	
  	
  	
  	
  	
  	
  	
  |	
  	
  	
  	
  	
  	
  	
  	
  	
  	
  |
|*	
  	
  2	
  |	
  	
  	
  INDEX	
  UNIQUE	
  SCAN|	
  PK_TAB2	
  |	
  	
  	
  	
  	
  1	
  |	
  	
  	
  	
  	
  7	
  |	
  	
  	
  	
  	
  1	
  	
  	
  (0)|	
  00:00:01	
  |
-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐
-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐
|	
  Id	
  	
  |	
  Operation	
  	
  	
  	
  	
  	
  	
  	
  	
  	
  |	
  Name	
  	
  	
  	
  |	
  Rows	
  	
  |	
  Bytes	
  |	
  Cost	
  (%CPU)|	
  Time	
  	
  	
  	
  	
  |
-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐
|	
  	
  	
  0	
  |	
  SELECT	
  STATEMENT	
  	
  	
  |	
  	
  	
  	
  	
  	
  	
  	
  	
  |	
  	
  	
  	
  	
  1	
  |	
  	
  	
  	
  	
  4	
  |	
  	
  	
  	
  	
  1	
  	
  	
  (0)|	
  00:00:01	
  |
|*	
  	
  1	
  |	
  	
  FILTER	
  	
  	
  	
  	
  	
  	
  	
  	
  	
  	
  	
  |	
  	
  	
  	
  	
  	
  	
  	
  	
  |	
  	
  	
  	
  	
  	
  	
  |	
  	
  	
  	
  	
  	
  	
  |	
  	
  	
  	
  	
  	
  	
  	
  	
  	
  	
  	
  |	
  	
  	
  	
  	
  	
  	
  	
  	
  	
  |
|*	
  	
  2	
  |	
  	
  	
  INDEX	
  UNIQUE	
  SCAN|	
  PK_TAB1	
  |	
  	
  	
  	
  	
  1	
  |	
  	
  	
  	
  	
  4	
  |	
  	
  	
  	
  	
  1	
  	
  	
  (0)|	
  00:00:01	
  |
-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐

13年11月16日土曜日
リモートクエリーの分析結果
-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐
|	
  Id	
  	
  |	
  Operation	
  	
  	
  	
  	
  	
  	
  	
  	
  |	
  Name	
  	
  	
  	
  |	
  Rows	
  	
  |	
  Bytes	
  |	
  Cost	
  (%CPU)|	
  Time	
  	
  	
  	
  	
  |
-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐
|	
  	
  	
  0	
  |	
  SELECT	
  STATEMENT	
  	
  |	
  	
  	
  	
  	
  	
  	
  	
  	
  |	
  	
  	
  200	
  |	
  	
  2000	
  |	
  	
  	
  	
  	
  3	
  	
  	
  (0)|	
  00:00:01	
  |
|	
  	
  	
  1	
  |	
  	
  INLIST	
  ITERATOR	
  	
  |	
  	
  	
  	
  	
  	
  	
  	
  	
  |	
  	
  	
  	
  	
  	
  	
  |	
  	
  	
  	
  	
  	
  	
  |	
  	
  	
  	
  	
  	
  	
  	
  	
  	
  	
  	
  |	
  	
  	
  	
  	
  	
  	
  	
  	
  	
  |
|*	
  	
  2	
  |	
  	
  	
  INDEX	
  RANGE	
  SCAN|	
  PK_TAB3	
  |	
  	
  	
  200	
  |	
  	
  2000	
  |	
  	
  	
  	
  	
  3	
  	
  	
  (0)|	
  00:00:01	
  |
-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐
-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐
|	
  Id	
  	
  |	
  Operation	
  	
  	
  	
  	
  	
  	
  	
  	
  	
  |	
  Name	
  	
  	
  	
  |	
  Rows	
  	
  |	
  Bytes	
  |	
  Cost	
  (%CPU)|	
  Time	
  	
  	
  	
  	
  |
-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐
|	
  	
  	
  0	
  |	
  SELECT	
  STATEMENT	
  	
  	
  |	
  	
  	
  	
  	
  	
  	
  	
  	
  |	
  	
  	
  	
  	
  1	
  |	
  	
  	
  	
  	
  7	
  |	
  	
  	
  	
  	
  1	
  	
  	
  (0)|	
  00:00:01	
  |
|*	
  	
  1	
  |	
  	
  FILTER	
  	
  	
  	
  	
  	
  	
  	
  	
  	
  	
  	
  |	
  	
  	
  	
  	
  	
  	
  	
  	
  |	
  	
  	
  	
  	
  	
  	
  |	
  	
  	
  	
  	
  	
  	
  |	
  	
  	
  	
  	
  	
  	
  	
  	
  	
  	
  	
  |	
  	
  	
  	
  	
  	
  	
  	
  	
  	
  |
|*	
  	
  2	
  |	
  	
  	
  INDEX	
  UNIQUE	
  SCAN|	
  PK_TAB2	
  |	
  	
  	
  	
  	
  1	
  |	
  	
  	
  	
  	
  7	
  |	
  	
  	
  	
  	
  1	
  	
  	
  (0)|	
  00:00:01	
  |
-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐
-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐
|	
  Id	
  	
  |	
  Operation	
  	
  	
  	
  	
  	
  	
  	
  	
  	
  |	
  Name	
  	
  	
  	
  |	
  Rows	
  	
  |	
  Bytes	
  |	
  Cost	
  (%CPU)|	
  Time	
  	
  	
  	
  	
  |
3本のリモートクエリは個別は、個別に発行
-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐
されており、実行計画は単純であり、SQL文
|	
  	
  	
  0	
  |	
  SELECT	
  STATEMENT	
  	
  	
  |	
  	
  	
  	
  	
  	
  	
  	
  	
  |	
  	
  	
  	
  	
  1	
  |	
  	
  	
  	
  	
  4	
  |	
  	
  	
  	
  	
  1	
  	
  	
  (0)|	
  00:00:01	
  |
|*	
  	
  1	
  |	
  	
  FILTER	
  	
  	
  	
  	
  	
  	
  	
  	
  	
  	
  	
  |	
  	
  	
  	
  	
  	
  	
  	
  	
  |	
  	
  	
  	
  	
  	
  	
  |	
  	
  	
  	
  	
  	
  	
  |	
  	
  	
  	
  	
  	
  	
  	
  	
  	
  	
  	
  |	
  	
  	
  	
  	
  	
  	
  	
  	
  	
  |
単体ではチューニングが必要という状態には
|*	
  	
  2	
  |	
  	
  	
  INDEX	
  UNIQUE	
  SCAN|	
  PK_TAB1	
  |	
  	
  	
  	
  	
  1	
  |	
  	
  	
  	
  	
  4	
  |	
  	
  	
  	
  	
  1	
  	
  	
  (0)|	
  00:00:01	
  |
ない....
-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐
ほかにチューニング可能な箇所はないか.......
13年11月16日土曜日
改善できそうな箇所
-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐
|	
  Id	
  	
  |	
  Operation	
  	
  	
  	
  	
  	
  	
  	
  	
  	
  	
  	
  	
  	
  	
  	
  	
  	
  	
  	
  |	
  Name	
  	
  	
  	
  |	
  Rows	
  	
  |	
  Bytes	
  |	
  Cost	
  (%CPU)|	
  Time	
  	
  	
  	
  	
  |	
  Inst	
  	
  	
  |IN-­‐OUT|
-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐
|	
  	
  	
  0	
  |	
  SELECT	
  STATEMENT	
  	
  	
  	
  	
  	
  	
  	
  	
  	
  	
  	
  	
  |	
  	
  	
  	
  	
  	
  	
  	
  	
  |	
  20000	
  |	
  	
  	
  	
  11M|	
  	
  	
  603	
  	
  	
  (0)|	
  00:00:01	
  |	
  	
  	
  	
  	
  	
  	
  	
  |	
  	
  	
  	
  	
  	
  |
|	
  	
  	
  1	
  |	
  	
  NESTED	
  LOOPS	
  	
  	
  	
  	
  	
  	
  	
  	
  	
  	
  	
  	
  	
  	
  	
  |	
  	
  	
  	
  	
  	
  	
  	
  	
  |	
  	
  	
  	
  	
  	
  	
  |	
  	
  	
  	
  	
  	
  	
  |	
  	
  	
  	
  	
  	
  	
  	
  	
  	
  	
  	
  |	
  	
  	
  	
  	
  	
  	
  	
  	
  	
  |	
  	
  	
  	
  	
  	
  	
  	
  |	
  	
  	
  	
  	
  	
  |
|	
  	
  	
  2	
  |	
  	
  	
  NESTED	
  LOOPS	
  	
  	
  	
  	
  	
  	
  	
  	
  	
  	
  	
  	
  	
  	
  |	
  	
  	
  	
  	
  	
  	
  	
  	
  |	
  20000	
  |	
  	
  	
  	
  11M|	
  	
  	
  603	
  	
  	
  (0)|	
  00:00:01	
  |	
  	
  	
  	
  	
  	
  	
  	
  |	
  	
  	
  	
  	
  	
  |
|	
  	
  	
  3	
  |	
  	
  	
  	
  NESTED	
  LOOPS	
  	
  	
  	
  	
  	
  	
  	
  	
  	
  	
  	
  	
  	
  |	
  	
  	
  	
  	
  	
  	
  	
  	
  |	
  	
  	
  200	
  |	
  15600	
  |	
  	
  	
  	
  	
  3	
  	
  	
  (0)|	
  00:00:01	
  |	
  	
  	
  	
  	
  	
  	
  	
  |	
  	
  	
  	
  	
  	
  |
|	
  	
  	
  4	
  |	
  	
  	
  	
  	
  NESTED	
  LOOPS	
  	
  	
  	
  	
  	
  	
  	
  	
  	
  	
  	
  	
  |	
  	
  	
  	
  	
  	
  	
  	
  	
  |	
  	
  	
  200	
  |	
  13000	
  |	
  	
  	
  	
  	
  3	
  	
  	
  (0)|	
  00:00:01	
  |	
  	
  	
  	
  	
  	
  	
  	
  |	
  	
  	
  	
  	
  	
  |
|	
  	
  	
  5	
  |	
  	
  	
  	
  	
  	
  REMOTE	
  	
  	
  	
  	
  	
  	
  	
  	
  	
  	
  	
  	
  	
  	
  	
  	
  	
  |	
  TAB3	
  	
  	
  	
  |	
  	
  	
  200	
  |	
  	
  7800	
  |	
  	
  	
  	
  	
  3	
  	
  	
  (0)|	
  00:00:01	
  |	
  PDBOR~	
  |	
  R-­‐>S	
  |
|	
  	
  	
  6	
  |	
  	
  	
  	
  	
  	
  REMOTE	
  	
  	
  	
  	
  	
  	
  	
  	
  	
  	
  	
  	
  	
  	
  	
  	
  	
  |	
  TAB2	
  	
  	
  	
  |	
  	
  	
  	
  	
  1	
  |	
  	
  	
  	
  26	
  |	
  	
  	
  	
  	
  0	
  	
  	
  (0)|	
  00:00:01	
  |	
  PDBOR~	
  |	
  R-­‐>S	
  |
|	
  	
  	
  7	
  |	
  	
  	
  	
  	
  REMOTE	
  	
  	
  	
  	
  	
  	
  	
  	
  	
  	
  	
  	
  	
  	
  	
  	
  	
  	
  |	
  TAB1	
  	
  	
  	
  |	
  	
  	
  	
  	
  1	
  |	
  	
  	
  	
  13	
  |	
  	
  	
  	
  	
  0	
  	
  	
  (0)|	
  00:00:01	
  |	
  PDBOR~	
  |	
  R-­‐>S	
  |
|*	
  	
  8	
  |	
  	
  	
  	
  INDEX	
  RANGE	
  SCAN	
  	
  	
  	
  	
  	
  	
  	
  	
  	
  |	
  PK_TAB4	
  |	
  	
  	
  	
  	
  1	
  |	
  	
  	
  	
  	
  	
  	
  |	
  	
  	
  	
  	
  2	
  	
  	
  (0)|	
  00:00:01	
  |	
  	
  	
  	
  	
  	
  	
  	
  |	
  	
  	
  	
  	
  	
  |
|	
  	
  	
  9	
  |	
  	
  	
  TABLE	
  ACCESS	
  BY	
  INDEX	
  ROWID|	
  TAB4	
  	
  	
  	
  |	
  	
  	
  100	
  |	
  51400	
  |	
  	
  	
  	
  	
  3	
  	
  	
  (0)|	
  00:00:01	
  |	
  	
  	
  	
  	
  	
  	
  	
  |	
  	
  	
  	
  	
  	
  |
-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐
Predicate	
  Information	
  (identified	
  by	
  operation	
  id):
-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐
	
  	
  	
  8	
  -­‐	
  access("TAB3"."UNIQUE#"="TAB4"."UNIQUE#"	
  AND	
  "TAB3"."BRANCH#"="TAB4"."BRANCH#"	
  AND
	
  	
  	
  	
  	
  	
  	
  	
  	
  	
  	
  	
  	
  	
  "TAB3"."LOC#"="TAB4"."LOC#")
	
  	
  	
  	
  	
  	
  	
  filter("TAB4"."UNIQUE#"=1	
  OR	
  "TAB4"."UNIQUE#"=2)

13年11月16日土曜日
改善できそうな箇所
-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐
|	
  Id	
  	
  |	
  Operation	
  	
  	
  	
  	
  	
  	
  	
  	
  	
  	
  	
  	
  	
  	
  	
  	
  	
  	
  	
  |	
  Name	
  	
  	
  	
  |	
  Rows	
  	
  |	
  Bytes	
  |	
  Cost	
  (%CPU)|	
  Time	
  	
  	
  	
  	
  |	
  Inst	
  	
  	
  |IN-­‐OUT|
-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐
|	
  	
  	
  0	
  |	
  SELECT	
  STATEMENT	
  	
  	
  	
  	
  	
  	
  	
  	
  	
  	
  	
  	
  |	
  	
  	
  	
  	
  	
  	
  	
  	
  |	
  20000	
  |	
  	
  	
  	
  11M|	
  	
  	
  603	
  	
  	
  (0)|	
  00:00:01	
  |	
  	
  	
  	
  	
  	
  	
  	
  |	
  	
  	
  	
  	
  	
  |
|	
  	
  	
  1	
  |	
  	
  NESTED	
  LOOPS	
  	
  	
  	
  	
  	
  	
  	
  	
  	
  	
  	
  	
  	
  	
  	
  |	
  	
  	
  	
  	
  	
  	
  	
  	
  |	
  	
  	
  	
  	
  	
  	
  |	
  	
  	
  	
  	
  	
  	
  |	
  	
  	
  	
  	
  	
  	
  	
  	
  	
  	
  	
  |	
  	
  	
  	
  	
  	
  	
  	
  	
  	
  |	
  	
  	
  	
  	
  	
  	
  	
  |	
  	
  	
  	
  	
  	
  |
|	
  	
  	
  2	
  |	
  	
  	
  NESTED	
  LOOPS	
  	
  	
  	
  	
  	
  	
  	
  	
  	
  	
  	
  	
  	
  	
  |	
  	
  	
  	
  	
  	
  	
  	
  	
  |	
  20000	
  |	
  	
  	
  	
  11M|	
  	
  	
  603	
  	
  	
  (0)|	
  00:00:01	
  |	
  	
  	
  	
  	
  	
  	
  	
  |	
  	
  	
  	
  	
  	
  |
|	
  	
  	
  3	
  |	
  	
  	
  	
  NESTED	
  LOOPS	
  	
  	
  	
  	
  	
  	
  	
  	
  	
  	
  	
  	
  	
  |	
  	
  	
  	
  	
  	
  	
  	
  	
  |	
  	
  	
  200	
  |	
  15600	
  |	
  	
  	
  	
  	
  3	
  	
  	
  (0)|	
  00:00:01	
  |	
  	
  	
  	
  	
  	
  	
  	
  |	
  	
  	
  	
  	
  	
  |
|	
  	
  	
  4	
  |	
  	
  	
  	
  	
  NESTED	
  LOOPS	
  	
  	
  	
  	
  	
  	
  	
  	
  	
  	
  	
  	
  |	
  	
  	
  	
  	
  	
  	
  	
  	
  |	
  	
  	
  200	
  |	
  13000	
  |	
  	
  	
  	
  	
  3	
  	
  	
  (0)|	
  00:00:01	
  |	
  	
  	
  	
  	
  	
  	
  	
  |	
  	
  	
  	
  	
  	
  |
|	
  	
  	
  5	
  |	
  	
  	
  	
  	
  	
  REMOTE	
  	
  	
  	
  	
  	
  	
  	
  	
  	
  	
  	
  	
  	
  	
  	
  	
  	
  |	
  TAB3	
  	
  	
  	
  |	
  	
  	
  200	
  |	
  	
  7800	
  |	
  	
  	
  	
  	
  3	
  	
  	
  (0)|	
  00:00:01	
  |	
  PDBOR~	
  |	
  R-­‐>S	
  |
|	
  	
  	
  6	
  |	
  	
  	
  	
  	
  	
  REMOTE	
  	
  	
  	
  	
  	
  	
  	
  	
  	
  	
  	
  	
  	
  	
  	
  	
  	
  |	
  TAB2	
  	
  	
  	
  |	
  	
  	
  	
  	
  1	
  |	
  	
  	
  	
  26	
  |	
  	
  	
  	
  	
  0	
  	
  	
  (0)|	
  00:00:01	
  |	
  PDBOR~	
  |	
  R-­‐>S	
  |
|	
  	
  	
  7	
  |	
  	
  	
  	
  	
  REMOTE	
  	
  	
  	
  	
  	
  	
  	
  	
  	
  	
  	
  	
  	
  	
  	
  	
  	
  	
  |	
  TAB1	
  	
  	
  	
  |	
  	
  	
  	
  	
  1	
  |	
  	
  	
  	
  13	
  |	
  	
  	
  	
  	
  0	
  	
  	
  (0)|	
  00:00:01	
  |	
  PDBOR~	
  |	
  R-­‐>S	
  |
|*	
  	
  8	
  |	
  	
  	
  	
  INDEX	
  RANGE	
  SCAN	
  	
  	
  	
  	
  	
  	
  	
  	
  	
  |	
  PK_TAB4	
  |	
  	
  	
  	
  	
  1	
  |	
  	
  	
  	
  	
  	
  	
  |	
  	
  	
  	
  	
  2	
  	
  	
  (0)|	
  00:00:01	
  |	
  	
  	
  	
  	
  	
  	
  	
  |	
  	
  	
  	
  	
  	
  |
|	
  	
  	
  9	
  |	
  	
  	
  TABLE	
  ACCESS	
  BY	
  INDEX	
  ROWID|	
  TAB4	
  	
  	
  	
  |	
  	
  	
  100	
  |	
  51400	
  |	
  	
  	
  	
  	
  3	
  	
  	
  (0)|	
  00:00:01	
  |	
  	
  	
  	
  	
  	
  	
  	
  |	
  	
  	
  	
  	
  	
  |
-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐
Predicate	
  Information	
  (identified	
  by	
  operation	
  id):
-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐

3つのリモートクエリーをDB Linkを介して
ネットワーク越しにNested Loop結合を行っ

	
  	
  	
  8	
  -­‐	
  access("TAB3"."UNIQUE#"="TAB4"."UNIQUE#"	
  AND	
  "TAB3"."BRANCH#"="TAB4"."BRANCH#"	
  AND
ている。
	
  	
  	
  	
  	
  	
  	
  	
  	
  	
  	
  	
  	
  	
  "TAB3"."LOC#"="TAB4"."LOC#")
	
  	
  	
  	
  	
  	
  	
  filter("TAB4"."UNIQUE#"=1	
  OR	
  "TAB4"."UNIQUE#"=2)
この部分をすべてリモートデータベース内で

完結させれば、多少の効率改善になるのでは
ないか....

13年11月16日土曜日
治療方針

3つのリモートクエリーを
インラインビューにまとめ
ることで、1つのリモート
クエリーとして効率化を狙
う

SELECT
	
  	
  	
  	
  /*+	
  USE_NL(t01	
  tab4)	
  */
	
  	
  	
  	
  tab4.*
FROM
	
  	
  	
  	
  (
	
  	
  	
  	
  	
  	
  	
  	
  SELECT
	
  	
  	
  	
  	
  	
  	
  	
  	
  	
  	
  	
  /*+	
  NO_MERGE	
  */
	
  	
  	
  	
  	
  	
  	
  	
  	
  	
  	
  	
  tab3.unique#
	
  	
  	
  	
  	
  	
  	
  	
  	
  	
  	
  	
  ,tab3.branch#
	
  	
  	
  	
  	
  	
  	
  	
  	
  	
  	
  	
  ,tab3.loc#
	
  	
  	
  	
  	
  	
  	
  	
  FROM
	
  	
  	
  	
  	
  	
  	
  	
  	
  	
  	
  	
  tab1
	
  	
  	
  	
  	
  	
  	
  	
  	
  	
  	
  	
  INNER	
  JOIN	
  tab2
	
  	
  	
  	
  	
  	
  	
  	
  	
  	
  	
  	
  ON
	
  	
  	
  	
  	
  	
  	
  	
  	
  	
  	
  	
  	
  	
  	
  	
  tab1.unique#	
  =	
  tab2.unique#	
  AND	
  tab1.unique#	
  IN	
  (1,2)
	
  	
  	
  	
  	
  	
  	
  	
  	
  	
  	
  	
  INNER	
  JOIN	
  tab3
	
  	
  	
  	
  	
  	
  	
  	
  	
  	
  	
  	
  ON
	
  	
  	
  	
  	
  	
  	
  	
  	
  	
  	
  	
  	
  	
  	
  	
  tab2.unique#	
  =	
  tab3.unique#	
  AND	
  tab2.branch#	
  =	
  tab3.branch#
	
  	
  	
  	
  )	
  t01
	
  	
  	
  	
  INNER	
  JOIN	
  tab4
	
  	
  	
  	
  ON
	
  	
  	
  	
  	
  	
  	
  	
  t01.unique#	
  =	
  tab4.unique#	
  AND	
  t01.branch#	
  =	
  tab4.branch#
	
  	
  	
  	
  AND	
  t01.loc#	
  	
  	
  	
  =	
  tab4.loc#
;

13年11月16日土曜日
DEMO

13年11月16日土曜日
治療後の実行計画(ローカル)
-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐
|	
  Id	
  	
  |	
  Operation	
  	
  	
  	
  	
  	
  	
  	
  	
  	
  	
  	
  	
  	
  	
  	
  	
  	
  	
  	
  |	
  Name	
  	
  	
  	
  |	
  Rows	
  	
  |	
  Bytes	
  |	
  Cost	
  (%CPU)|	
  Time	
  	
  	
  	
  	
  |	
  Inst	
  	
  	
  |IN-­‐OUT|
-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐
|	
  	
  	
  0	
  |	
  SELECT	
  STATEMENT	
  	
  	
  	
  	
  	
  	
  	
  	
  	
  	
  	
  	
  |	
  	
  	
  	
  	
  	
  	
  	
  	
  |	
  20000	
  |	
  	
  	
  	
  10M|	
  	
  2004	
  	
  	
  (1)|	
  00:00:01	
  |	
  	
  	
  	
  	
  	
  	
  	
  |	
  	
  	
  	
  	
  	
  |
|	
  	
  	
  1	
  |	
  	
  NESTED	
  LOOPS	
  	
  	
  	
  	
  	
  	
  	
  	
  	
  	
  	
  	
  	
  	
  	
  |	
  	
  	
  	
  	
  	
  	
  	
  	
  |	
  	
  	
  	
  	
  	
  	
  |	
  	
  	
  	
  	
  	
  	
  |	
  	
  	
  	
  	
  	
  	
  	
  	
  	
  	
  	
  |	
  	
  	
  	
  	
  	
  	
  	
  	
  	
  |	
  	
  	
  	
  	
  	
  	
  	
  |	
  	
  	
  	
  	
  	
  |
|	
  	
  	
  2	
  |	
  	
  	
  NESTED	
  LOOPS	
  	
  	
  	
  	
  	
  	
  	
  	
  	
  	
  	
  	
  	
  	
  |	
  	
  	
  	
  	
  	
  	
  	
  	
  |	
  20000	
  |	
  	
  	
  	
  10M|	
  	
  2004	
  	
  	
  (1)|	
  00:00:01	
  |	
  	
  	
  	
  	
  	
  	
  	
  |	
  	
  	
  	
  	
  	
  |
|	
  	
  	
  3	
  |	
  	
  	
  	
  VIEW	
  	
  	
  	
  	
  	
  	
  	
  	
  	
  	
  	
  	
  	
  	
  	
  	
  	
  	
  	
  	
  	
  |	
  	
  	
  	
  	
  	
  	
  	
  	
  |	
  	
  	
  200	
  |	
  	
  7800	
  |	
  	
  	
  	
  	
  3	
  	
  	
  (0)|	
  00:00:01	
  |	
  	
  	
  	
  	
  	
  	
  	
  |	
  	
  	
  	
  	
  	
  |
|	
  	
  	
  4	
  |	
  	
  	
  	
  	
  REMOTE	
  	
  	
  	
  	
  	
  	
  	
  	
  	
  	
  	
  	
  	
  	
  	
  	
  	
  	
  |	
  	
  	
  	
  	
  	
  	
  	
  	
  |	
  	
  	
  	
  	
  	
  	
  |	
  	
  	
  	
  	
  	
  	
  |	
  	
  	
  	
  	
  	
  	
  	
  	
  	
  	
  	
  |	
  	
  	
  	
  	
  	
  	
  	
  	
  	
  |	
  PDBOR~	
  |	
  R-­‐>S	
  |
|*	
  	
  5	
  |	
  	
  	
  	
  INDEX	
  RANGE	
  SCAN	
  	
  	
  	
  	
  	
  	
  	
  	
  	
  |	
  PK_TAB4	
  |	
  	
  	
  100	
  |	
  	
  	
  	
  	
  	
  	
  |	
  	
  	
  	
  	
  2	
  	
  	
  (0)|	
  00:00:01	
  |	
  	
  	
  	
  	
  	
  	
  	
  |	
  	
  	
  	
  	
  	
  |
|	
  	
  	
  6	
  |	
  	
  	
  TABLE	
  ACCESS	
  BY	
  INDEX	
  ROWID|	
  TAB4	
  	
  	
  	
  |	
  	
  	
  100	
  |	
  51400	
  |	
  	
  	
  	
  10	
  	
  	
  (0)|	
  00:00:01	
  |	
  	
  	
  	
  	
  	
  	
  	
  |	
  	
  	
  	
  	
  	
  |
-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐
Predicate	
  Information	
  (identified	
  by	
  operation	
  id):
-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐
	
  	
  	
  5	
  -­‐	
  access("T01"."UNIQUE#"="TAB4"."UNIQUE#"	
  AND	
  "T01"."BRANCH#"="TAB4"."BRANCH#"	
  AND
	
  	
  	
  	
  	
  	
  	
  	
  	
  	
  	
  	
  	
  	
  "T01"."LOC#"="TAB4"."LOC#")
Remote	
  SQL	
  Information	
  (identified	
  by	
  operation	
  id):
-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐
	
  	
  	
  4	
  -­‐	
  EXPLAIN	
  PLAN	
  SET	
  STATEMENT_ID='PLUS8440309'	
  INTO	
  PLAN_TABLE@!	
  FOR	
  SELECT	
  /*+	
  NO_MERGE	
  */
	
  	
  	
  	
  	
  	
  	
  "A1"."UNIQUE#","A1"."BRANCH#","A1"."LOC#"	
  FROM	
  "TAB1"	
  "A3","TAB2"	
  "A2","TAB3"	
  "A1"	
  WHERE
	
  	
  	
  	
  	
  	
  	
  "A2"."UNIQUE#"="A1"."UNIQUE#"	
  AND	
  "A2"."BRANCH#"="A1"."BRANCH#"	
  AND
	
  	
  	
  	
  	
  	
  	
  "A3"."UNIQUE#"="A2"."UNIQUE#"	
  AND	
  ("A3"."UNIQUE#"=1	
  OR	
  "A3"."UNIQUE#"=2)	
  AND	
  ("A2"."UNIQUE#"=1
	
  	
  	
  	
  	
  	
  	
  OR	
  "A2"."UNIQUE#"=2)	
  AND	
  ("A1"."UNIQUE#"=1	
  OR	
  "A1"."UNIQUE#"=2)	
  (accessing	
  'PDBORCL_R'	
  )

13年11月16日土曜日
治療後の実行計画(リモート)
-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐
|	
  Id	
  	
  |	
  Operation	
  	
  	
  	
  	
  	
  	
  	
  	
  	
  	
  |	
  Name	
  	
  	
  	
  |	
  Rows	
  	
  |	
  Bytes	
  |	
  Cost	
  (%CPU)|	
  Time	
  	
  	
  	
  	
  |
-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐
|	
  	
  	
  0	
  |	
  SELECT	
  STATEMENT	
  	
  	
  	
  |	
  	
  	
  	
  	
  	
  	
  	
  	
  |	
  	
  	
  	
  20	
  |	
  	
  	
  420	
  |	
  	
  	
  	
  	
  3	
  	
  	
  (0)|	
  00:00:01	
  |
|	
  	
  	
  1	
  |	
  	
  NESTED	
  LOOPS	
  	
  	
  	
  	
  	
  	
  |	
  	
  	
  	
  	
  	
  	
  	
  	
  |	
  	
  	
  	
  20	
  |	
  	
  	
  420	
  |	
  	
  	
  	
  	
  3	
  	
  	
  (0)|	
  00:00:01	
  |
|	
  	
  	
  2	
  |	
  	
  	
  NESTED	
  LOOPS	
  	
  	
  	
  	
  	
  |	
  	
  	
  	
  	
  	
  	
  	
  	
  |	
  	
  	
  	
  20	
  |	
  	
  	
  340	
  |	
  	
  	
  	
  	
  3	
  	
  	
  (0)|	
  00:00:01	
  |
|	
  	
  	
  3	
  |	
  	
  	
  	
  INLIST	
  ITERATOR	
  	
  |	
  	
  	
  	
  	
  	
  	
  	
  	
  |	
  	
  	
  	
  	
  	
  	
  |	
  	
  	
  	
  	
  	
  	
  |	
  	
  	
  	
  	
  	
  	
  	
  	
  	
  	
  	
  |	
  	
  	
  	
  	
  	
  	
  	
  	
  	
  |
|*	
  	
  4	
  |	
  	
  	
  	
  	
  INDEX	
  RANGE	
  SCAN|	
  PK_TAB3	
  |	
  	
  	
  200	
  |	
  	
  2000	
  |	
  	
  	
  	
  	
  3	
  	
  	
  (0)|	
  00:00:01	
  |
|*	
  	
  5	
  |	
  	
  	
  	
  INDEX	
  UNIQUE	
  SCAN|	
  PK_TAB2	
  |	
  	
  	
  	
  	
  1	
  |	
  	
  	
  	
  	
  7	
  |	
  	
  	
  	
  	
  0	
  	
  	
  (0)|	
  00:00:01	
  |
|*	
  	
  6	
  |	
  	
  	
  INDEX	
  UNIQUE	
  SCAN	
  |	
  PK_TAB1	
  |	
  	
  	
  	
  	
  1	
  |	
  	
  	
  	
  	
  4	
  |	
  	
  	
  	
  	
  0	
  	
  	
  (0)|	
  00:00:01	
  |
-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐
Predicate	
  Information	
  (identified	
  by	
  operation	
  id):
-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐
	
  	
  	
  4	
  -­‐	
  access("A1"."UNIQUE#"=1	
  OR	
  "A1"."UNIQUE#"=2)
	
  	
  	
  5	
  -­‐	
  access("A2"."UNIQUE#"="A1"."UNIQUE#"	
  AND
	
  	
  	
  	
  	
  	
  	
  	
  	
  	
  	
  	
  	
  	
  "A2"."BRANCH#"="A1"."BRANCH#")
	
  	
  	
  	
  	
  	
  	
  filter("A2"."UNIQUE#"=1	
  OR	
  "A2"."UNIQUE#"=2)
	
  	
  	
  6	
  -­‐	
  access("A3"."UNIQUE#"="A2"."UNIQUE#")
	
  	
  	
  	
  	
  	
  	
  filter("A3"."UNIQUE#"=1	
  OR	
  "A3"."UNIQUE#"=2)

13年11月16日土曜日
治療効果の確認

Elapsed TIme

Before
After
13年11月16日土曜日
治療完!
釣ったSQL文はリリース

13年11月16日土曜日
治療完!
釣ったSQL文はリリース
分散クエリーをチューニングする
スキルを手に入れた。:)

13年11月16日土曜日
Oracle® Database管理者ガイド 12c リリース1 (12.1)
分散問合せのチューニング

http://docs.oracle.com/cd/E49329_01/server.
121/b71301/ds_appdev.htm#i1007640

13年11月16日土曜日
バッファキャッシュ欠乏症

13年11月16日土曜日
釣り上げたSQLは、バッフ
ァキャッシュが足りなくて
息も絶え絶え...ほとんどが
User I/O待機...治療法は...
13年11月16日土曜日
問診結果
開口一番、予算はほぼないが小手先でなにか対処で
きない?
UPDATE文をループ処理内で繰り返し発行している
(ループ処理は大人の事情により一括化できない)
ストレージは非力で遅い
処理対象表のデータは増加しつづける
OracleはStandard Edition
年々というより毎月処理速度が劣化している
etc...
13年11月16日土曜日
精密検査(コード)
DECLARE
	
  	
  	
  	
  CURSOR	
  cs_foobar	
  IS
	
  	
  	
  	
  	
  	
  	
  	
  SELECT
	
  	
  	
  	
  	
  	
  	
  	
  	
  	
  	
  	
  rowid
	
  	
  	
  	
  	
  	
  	
  	
  FROM
	
  	
  	
  	
  	
  	
  	
  	
  	
  	
  	
  	
  foobar
	
  	
  	
  	
  	
  	
  	
  	
  WHERE
	
  	
  	
  	
  	
  	
  	
  	
  	
  	
  	
  	
  unique#	
  BETWEEN	
  1	
  AND	
  400000
	
  	
  	
  	
  	
  	
  	
  	
  ORDER	
  BY
	
  	
  	
  	
  	
  	
  	
  	
  	
  	
  	
  	
  unique#
	
  	
  	
  	
  	
  	
  	
  	
  FOR	
  UPDATE;
BEGIN
	
  	
  	
  	
  FOR	
  row	
  IN	
  cs_foobar	
  LOOP
	
  	
  	
  	
  	
  	
  	
  UPDATE	
  foobar
	
  	
  	
  	
  	
  	
  	
  SET
	
  	
  	
  	
  	
  	
  	
  	
  	
  	
  	
  foobar_str	
  =	
  LPAD('y',500,'y')
	
  	
  	
  	
  	
  	
  	
  WHERE
	
  	
  	
  	
  	
  	
  	
  	
  	
  	
  	
  rowid	
  =	
  row.rowid;
	
  	
  	
  	
  END	
  LOOP;
	
  	
  	
  	
  COMMIT;
END;
/

13年11月16日土曜日
精密検査(コード)
DECLARE
	
  	
  	
  	
  CURSOR	
  cs_foobar	
  IS
	
  	
  	
  	
  	
  	
  	
  	
  SELECT
	
  	
  	
  	
  	
  	
  	
  	
  	
  	
  	
  	
  rowid
	
  	
  	
  	
  	
  	
  	
  	
  FROM
	
  	
  	
  	
  	
  	
  	
  	
  	
  	
  	
  	
  foobar
	
  	
  	
  	
  	
  	
  	
  	
  WHERE
	
  	
  	
  	
  	
  	
  	
  	
  	
  	
  	
  	
  unique#	
  BETWEEN	
  1	
  AND	
  400000
	
  	
  	
  	
  	
  	
  	
  	
  ORDER	
  BY
	
  	
  	
  	
  	
  	
  	
  	
  	
  	
  	
  	
  unique#
	
  	
  	
  	
  	
  	
  	
  	
  FOR	
  UPDATE;
BEGIN
	
  	
  	
  	
  FOR	
  row	
  IN	
  cs_foobar	
  LOOP
	
  	
  	
  	
  	
  	
  	
  UPDATE	
  foobar
	
  	
  	
  	
  	
  	
  	
  SET
	
  	
  	
  	
  	
  	
  	
  	
  	
  	
  	
  foobar_str	
  =	
  LPAD('y',500,'y')
	
  	
  	
  	
  	
  	
  	
  WHERE
	
  	
  	
  	
  	
  	
  	
  	
  	
  	
  	
  rowid	
  =	
  row.rowid;
	
  	
  	
  	
  END	
  LOOP;
	
  	
  	
  	
  COMMIT;
END;
/

13年11月16日土曜日
精密検査(統計情報)
USER_INDEXESより
TABLE_NAME
INDEX_NAME
NUM_ROWS
DISTINCT_KEYS CLUSTERING_FACTOR
-------------- --------------- ---------- ------------- ----------------FOOBAR
SYS_C0010235
2070913
2070913
2070899
USER_IND_COLUMNSより
NDEX_NAME
COLUMN_NAME
---------------- -------------SYS_C0010235
UNIQUE#
USER_TABLESより
TABLE_NAME
NUM_ROWS
AVG_ROW_LEN
------------ ---------- ----------FOOBAR
2000000
506

13年11月16日土曜日
精密検査(統計情報)
USER_INDEXESより
TABLE_NAME
INDEX_NAME
NUM_ROWS
DISTINCT_KEYS CLUSTERING_FACTOR
-------------- --------------- ---------- ------------- ----------------FOOBAR
SYS_C0010235
2070913
2070913
2070899
USER_IND_COLUMNSより
NDEX_NAME
COLUMN_NAME
---------------- -------------SYS_C0010235
UNIQUE#

クラスタリング
ファクタが高い
400,000件更新するので全表走

USER_TABLESより
TABLE_NAME
NUM_ROWS
AVG_ROW_LEN
------------ ---------- ----------FOOBAR
2000000
506

13年11月16日土曜日

査1回のほうが効率的だが..大
人の事情でできない。
精密検査(初期化パラメータ)
バッファキャッシュ関連
NAME
-------------------db_block_size
db_cache_size
db_16k_cache_size
db_2k_cache_size
db_32k_cache_size
db_4k_cache_size
db_8k_cache_size
pga_aggregate_target

13年11月16日土曜日

TYPE
----------integer
big integer
big integer
big integer
big integer
big integer
big integer
big integer

VALUE
------8192
32M
0
0
0
0
0
512M
精密検査(初期化パラメータ)
バッファキャッシュ関連
NAME
-------------------db_block_size
db_cache_size
db_16k_cache_size
db_2k_cache_size
db_32k_cache_size
db_4k_cache_size
db_8k_cache_size
pga_aggregate_target

13年11月16日土曜日

TYPE
----------integer
big integer
big integer
big integer
big integer
big integer
big integer
big integer

VALUE
------8192
32M
0
0
0
0
0
512M

確かに少ないです。
が....
大人の事情で物理メモリ
は増やせません!
精密検査(続き)
Block Size = 8192bytes → 4096blocks(Buffer Cache)
AVG_ROW_LEN = 506bytes、 PCTFREE=10%
→ 1ブロックあたり14行程度(大雑把に計算すると)
200万行中、40万件更新 → 28,572blocks(程度は更新)
対象データブロックをすべてをバッファキャッシュに乗せるこ
とはできない。
脳内シュミレーション中....

13年11月16日土曜日
治療法を考える
DECLARE
	
  	
  	
  	
  CURSOR	
  cs_foobar	
  IS
	
  	
  	
  	
  	
  	
  	
  	
  SELECT
	
  	
  	
  	
  	
  	
  	
  	
  	
  	
  	
  	
  rowid
	
  	
  	
  	
  	
  	
  	
  	
  FROM
	
  	
  	
  	
  	
  	
  	
  	
  	
  	
  	
  	
  foobar
	
  	
  	
  	
  	
  	
  	
  	
  WHERE
	
  	
  	
  	
  	
  	
  	
  	
  	
  	
  	
  	
  unique#	
  BETWEEM	
  1	
  AND	
  400000
	
  	
  	
  	
  	
  	
  	
  	
  ORDER	
  BY
	
  	
  	
  	
  	
  	
  	
  	
  	
  	
  	
  	
  unique#
	
  	
  	
  	
  	
  	
  	
  	
  FOR	
  UPDATE;
BEGIN
	
  	
  	
  	
  FOR	
  row	
  IN	
  cs_foobar	
  LOOP
	
  	
  	
  	
  	
  	
  	
  	
  UPDATE	
  foobar
	
  	
  	
  	
  	
  	
  	
  	
  SET
	
  	
  	
  	
  	
  	
  	
  	
  	
  	
  	
  	
  foobar_str	
  =	
  LPAD('y',500,'y')
	
  	
  	
  	
  	
  	
  	
  	
  WHERE
	
  	
  	
  	
  	
  	
  	
  	
  	
  	
  	
  	
  rowid	
  =	
  row.rowid;
	
  	
  	
  	
  END	
  LOOP;
	
  	
  	
  	
  COMMIT;
END;
/
脳内シュミレーション中....

13年11月16日土曜日
治療法を考える

主キーのク

DECLARE
ラスタリングファクタ
	
  	
  	
  	
  CURSOR	
  cs_foobar	
  IS
	
  	
  	
  	
  	
  	
  	
  	
  SELECT
	
  	
  	
  	
  	
  	
  	
  	
  	
  	
  	
  	
  rowid
の高さとバッファキャッ
	
  	
  	
  	
  	
  	
  	
  	
  FROM
	
  	
  	
  	
  	
  	
  	
  	
  	
  	
  	
  	
  foobar
	
  	
  	
  	
  	
  	
  	
  	
  WHERE
スの少なさに
	
  	
  	
  	
  	
  	
  	
  	
  	
  	
  	
  	
  unique#	
  BETWEEM	
  1	
  AND	
  400000
	
  	
  	
  	
  	
  	
  	
  	
  ORDER	
  BY
	
  	
  	
  	
  	
  	
  	
  	
  	
  	
  	
  	
  unique#
着目!
	
  	
  	
  	
  	
  	
  	
  	
  FOR	
  UPDATE;
BEGIN
	
  	
  	
  	
  FOR	
  row	
  IN	
  cs_foobar	
  LOOP
	
  	
  	
  	
  	
  	
  	
  	
  UPDATE	
  foobar
	
  	
  	
  	
  	
  	
  	
  	
  SET
	
  	
  	
  	
  	
  	
  	
  	
  	
  	
  	
  	
  foobar_str	
  =	
  LPAD('y',500,'y')
	
  	
  	
  	
  	
  	
  	
  	
  WHERE
	
  	
  	
  	
  	
  	
  	
  	
  	
  	
  	
  	
  rowid	
  =	
  row.rowid;
	
  	
  	
  	
  END	
  LOOP;
	
  	
  	
  	
  COMMIT;
END;
/
脳内シュミレーション中....

13年11月16日土曜日
仮説(現状の動作)
クラスタリングファクタの高い主キー索引でソート
主キー順で更新すると最悪の場合、1行毎に異なる
データブロックをバッファキャッシュに読み込む
バッファキャッシュは更新する全ブロックを保持でき
るほど大きくない。1行だけ更新されたデータブロ
ックがバッファキャッシュから書き出される可能性
脳内シュミレーション中....

13年11月16日土曜日
現状の動き(妄想も含む) 脳内シュミレーション中....
(1∼25でソート後、1件毎に更新。1∼5の更新イメージ)

0

Buffer Cache

0
I/O回数合計

Storage

16

11

22

4

25

1

23

13

9

5

6

2

8

20

21
10

13年11月16日土曜日

15

12
24

7
19

17
3

14
18
現状の動き(妄想も含む) 脳内シュミレーション中....
(1∼25でソート後、1件毎に更新。1∼5の更新イメージ)

0
1
5
4
3
2

17
21
14
7
12
19
10
18
3
24

Buffer Cache

22
11
16
4
15
13
23
25
9
1

0
1
4
3
2

20
8
2
5
6

I/O回数合計

Storage

16

11

22

4

25

1

23

13

9

5

6

2

8

20

21
10

13年11月16日土曜日

15

12
24

7
19

17
3

14
18
現状の動き(妄想も含む) 脳内シュミレーション中....
(1∼25でソート後、1件毎に更新。1∼5の更新イメージ)

0
1
5
4
3
2

17
21
14
7
12
19
10
18
3
24

Buffer Cache

22
11
16
4
15
13
23
25
9
1

0
1
4
3
2

20
8
2
5
6

I/O回数合計

Storage

16

11

22

4

25

1

23

13

9

5

6

2

8

20

21
10

13年11月16日土曜日

15

12
24

7
19

17
3

14
18
仮説(治療後のイメージ)
ROWIDのブロック番号部分でソート
バッファキャッシュに読み込んだブロックに含まれる
全行を1行毎に更新。
バッファキャッシュは更新対象となる全ブロックを保
持できるほど大きくないが、1行毎に異なるブロッ
クを読み込む可能性は低くなる。(物理I/O削減)
脳内シュミレーション中....

13年11月16日土曜日
治療後の動き(妄想も含む) 脳内シュミレーション中....
(同一ブロック内の全行を1行毎に更新、全行の更新時のイメージ)
Buffer Cache

0
0
I/O回数合計

Storage

16

11

22

4

25

1

23

13

9

5

6

2

8

20

21
10

13年11月16日土曜日

15

12
24

7
19

17
3

14
18
治療後の動き(妄想も含む) 脳内シュミレーション中....
(同一ブロック内の全行を1行毎に更新、全行の更新時のイメージ)
Buffer Cache

15
16
4
22
11
25
13
1
9
23
5
20
2
6
8

5
4
3
2
1
0

12
21
17
14
7
24
10
18
3
19

4
3
2
1
0
I/O回数合計

Storage

16
25
5
21
10

13年11月16日土曜日

15
1

11
23

12
24

7
19

6

2

22
13

4
9

8

20

17
3

14
18
治療後の動き(妄想も含む) 脳内シュミレーション中....
(同一ブロック内の全行を1行毎に更新、全行の更新時のイメージ)
Buffer Cache

15
16
4
22
11
25
13
1
9
23
5
20
2
6
8

5
4
3
2
1
0

12
21
17
14
7
24
10
18
3
19

4
3
2
1
0
I/O回数合計

Storage

16
25
5
21
10

13年11月16日土曜日

15
1

11
23

12
24

7
19

6

2

22
13

4
9

8

20

17
3

14
18
治療方針確定
主キー順のソートは業務要件なのか? 必須でなけ
れば、ソート条件を変更したい。(重要)
→回答:業務要件ではなく主キー順なら高速に処理
できると考えた。索引があるのでソート処理はバイパ
スされソート処理のコストがないので良しとしてい
た。

13年11月16日土曜日
処方箋
DECLARE
	
  	
  	
  	
  CURSOR	
  cs_foobar	
  IS
	
  	
  	
  	
  	
  	
  	
  	
  SELECT
	
  	
  	
  	
  	
  	
  	
  	
  	
  	
  	
  	
  rowid
	
  	
  	
  	
  	
  	
  	
  	
  FROM
	
  	
  	
  	
  	
  	
  	
  	
  	
  	
  	
  	
  foobar
	
  	
  	
  	
  	
  	
  	
  	
  WHERE
	
  	
  	
  	
  	
  	
  	
  	
  	
  	
  	
  	
  unique#	
  BETWEEN	
  1	
  AND	
  400000
	
  	
  	
  	
  	
  	
  	
  	
  ORDER	
  BY
	
  	
  	
  	
  	
  	
  	
  	
  	
  	
  	
  	
  DBMS_ROWID.ROWID_BLOCK_NUMBER(rowid)
	
  	
  	
  	
  	
  	
  	
  	
  FOR	
  UPDATE;
BEGIN
	
  	
  	
  	
  FOR	
  row	
  IN	
  cs_foobar	
  LOOP
	
  	
  	
  	
  	
  	
  	
  	
  UPDATE	
  foobar
	
  	
  	
  	
  	
  	
  	
  	
  SET
	
  	
  	
  	
  	
  	
  	
  	
  	
  	
  	
  	
  foobar_str	
  =	
  LPAD('y',500,'y')
	
  	
  	
  	
  	
  	
  	
  	
  WHERE
	
  	
  	
  	
  	
  	
  	
  	
  	
  	
  	
  	
  rowid	
  =	
  row.rowid;
	
  	
  	
  	
  END	
  LOOP;
	
  	
  	
  	
  COMMIT;
END;
/

13年11月16日土曜日
DEMO

13年11月16日土曜日
v$sysstatより
STATISTICS NAME

BEFORE

AFTER

Diff

dirty buffers inspected

785,126

298,823

-486,303

free buffer inspected

847,091

308,384

-538,707

free buffer requested

839,961

307,981

-531,980

physical read IO requests

791,470

273,368

-518,102

physical read total IO requests

794,522

274,376

-520,146

0

0

0

physical reads

802,309

273,605

-528,704

physical reads cache

802,140

273,410

-528,730

physical write IO requests

774,818

246,934

-527,884

physical write total IO requests

779,397

248,918

-530,479

physical writes

825,809

306,644

-519,165

physical writes from cache

825,631

306,479

-519,152

physical writes non checkpoint

818,900

303,921

-514,979

physical read total multi block requests

13年11月16日土曜日
v$sysstatより
STATISTICS NAME

BEFORE

AFTER

Diff

dirty buffers inspected

785,126

298,823

-486,303

free buffer inspected

847,091

308,384

-538,707

free buffer requested

839,961

307,981

-531,980

physical read IO requests

791,470

273,368

-518,102

physical read total IO requests

794,522

274,376

-520,146

0

0

0

physical reads

802,309

273,605

-528,704

physical reads cache

802,140

273,410

-528,730

physical write IO requests

774,818

246,934

-527,884

physical write total IO requests

779,397

248,918

-530,479

physical writes

825,809

306,644

-519,165

physical writes from cache

825,631

306,479

-519,152

physical writes non checkpoint

818,900

303,921

-514,979

physical read total multi block requests

13年11月16日土曜日
グラフ 10

治療効果の確認
900,000

675,000

225,000
0

free buffer requested
physical reads cache
physical writes from cache
BEFORE

13年11月16日土曜日

AFTER

Blocks

450,000
治療完。
釣ったSQLはリリース!

13年11月16日土曜日
治療完。
釣ったSQLはリリース!
バッファキャッシュを効果的に利
用するスキルを手に入れた。

13年11月16日土曜日
参照整合性制約アレルギー

13年11月16日土曜日
釣り上げたSQLは、アレル
ギーを発症していた....
一度発症すると、一生付き
合って行くしか無い...
13年11月16日土曜日
仕様書で見るERDは...

Oracle SQL Developer Data Modeler 4.0.0

13年11月16日土曜日
リバースエンジニアリングすると...

13年11月16日土曜日
13年11月16日土曜日
キーレスエントリー
(SQLアンチパターンより)

13年11月16日土曜日
よく見かけます。

13年11月16日土曜日
なぜ
参照整合性制約アレルギー
が発症してしまうの
でしょう?
13年11月16日土曜日
通りすがりで、
SQLアンチパターン勉強会
へ参加した時のこと...
(@t_wadaさんにお会いした :)

13年11月16日土曜日
否定派の意見(私見含む)
テストデータを作るときに面倒。
参照整合性制約?、なにそれ怖い症候群。
参照整合性制約って遅くね?
整合性チェックプログラムがあればOKじゃね。
etc....

13年11月16日土曜日
賛成派の意見(私見含む)
参照整合性制約は、有効/無効化できる
データ不整合が発生した時の方が厄介だ
参照整合性制約が定義できないデータモデルのほう
が怖い
プログラムやSQL文のコード量が削減できる
オプティマイザが考慮してくる(SQL文最適化)
etc...
13年11月16日土曜日
賛成派の意見(私見含む)
参照整合性制約は、有効/無効化できる
データ不整合が発生した時の方が厄介だ
参照整合性制約が定義できないデータモデルのほう
が怖い
プログラムやSQL文のコード量が削減できる
オプティマイザが考慮してくる(SQL文最適化)
etc...
13年11月16日土曜日
ERDではリレーションが定義されていて
も...

13年11月16日土曜日
ERDではリレーションが定義されていて
も...

13年11月16日土曜日
実際には参照整合性制約は定義されな
い。なぜ...

13年11月16日土曜日
実際には参照整合性制約は定義されな
い。なぜ...

13年11月16日土曜日
参照整合性制約のメリット
が語られてるのを見た事が
ない。→良さを知らない。
参照整合性制約?
なにそれ怖い症候群
13年11月16日土曜日
そもそも参照整合性制約を
作成できない。

正規化できてない ><
13年11月16日土曜日
後から気づいても、対処の
しようがない。(多分)

13年11月16日土曜日
突然ですが、
ここで問題です

13年11月16日土曜日
13年11月16日土曜日
13年11月16日土曜日
前のスライドでお見せした
ERDを基に、オーダー毎の
アイテム数を取得するクエ
リーを考えてください。

13年11月16日土曜日
このようなクエリーを書く事に....
SELECT
	
  	
  	
  	
  orderitems.order#,COUNT(1)
FROM
	
  	
  	
  	
  orderitems
	
  	
  	
  	
  INNER	
  JOIN	
  items
	
  	
  	
  	
  ON
	
  	
  	
  	
  	
  	
  	
  	
  orderitems.item#	
  =	
  items.item#
	
  	
  	
  	
  INNER	
  JOIN	
  orders
	
  	
  	
  	
  ON
	
  	
  	
  	
  	
  	
  	
  	
  orderitems.order#	
  =	
  orders.order#
	
  	
  	
  	
  INNER	
  JOIN	
  customers
	
  	
  	
  	
  ON
	
  	
  	
  	
  	
  	
  	
  	
  orders.customer#	
  =	
  customers.customer#
GROUP	
  BY
	
  	
  	
  	
  orderitems.order#
;
13年11月16日土曜日
理由は?
依存関係にあるデータの存在が保証され
ない為、依存関係にあるデータを結合し
ないと正しい結果が得られない可能性が
ある。念のために結合しておこう。

13年11月16日土曜日
裏返せば、依存関係のあるデータの存在
が参照整合性制約で保証されていれば、
結合は不要!

結合は不要!
(大切なので2度書きました)

13年11月16日土曜日
参照整合性制約がある場合は

これでいいですよね!
SELECT
orderitems.order#,COUNT(1)
FROM
orderitems
GROUP BY
orderitems.order#
;

13年11月16日土曜日
参照整合性制約がある場合は

これでいいですよね!
SELECT
orderitems.order#,COUNT(1)
FROM
orderitems
GROUP BY
orderitems.order#
;

13年11月16日土曜日
オプティマイザーはどう判
断するのでしょう?

13年11月16日土曜日
SELECT
orderitems.order#,COUNT(1)
FROM
orderitems
INNER JOIN items
ON
orderitems.item# = items.item#
INNER JOIN orders
ON
orderitems.order# = orders.order#
INNER JOIN customers
ON
orders.customer# = customers.customer#
GROUP BY
orderitems.order#
;

13年11月16日土曜日
SELECT
orderitems.order#,COUNT(1)
FROM
orderitems
INNER JOIN items
ON
orderitems.item# = items.item#
INNER JOIN orders
ON
orderitems.order# = orders.order#
INNER JOIN customers
ON
orders.customer# = customers.customer#
GROUP BY
orderitems.order#
参照整合性制約の有無で実行計画がどう変
;
化するか見てみます!

13年11月16日土曜日
DEMO

13年11月16日土曜日
参照整合性制約なし
実行計画
-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐
Plan	
  hash	
  value:	
  411877633
-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐
|	
  Id	
  	
  |	
  Operation	
  	
  	
  	
  	
  	
  	
  	
  	
  	
  	
  	
  	
  	
  |	
  Name	
  	
  	
  	
  	
  	
  	
  	
  	
  	
  |	
  Rows	
  	
  |	
  Bytes	
  |TempSpc|	
  Cost	
  (%CPU)|	
  Time	
  	
  	
  	
  	
  |
-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐
|	
  	
  	
  0	
  |	
  SELECT	
  STATEMENT	
  	
  	
  	
  	
  	
  	
  |	
  	
  	
  	
  	
  	
  	
  	
  	
  	
  	
  	
  	
  	
  	
  |	
  50000	
  |	
  	
  1464K|	
  	
  	
  	
  	
  	
  	
  |	
  	
  1325	
  	
  	
  (3)|	
  00:00:16	
  |
|	
  	
  	
  1	
  |	
  	
  SORT	
  GROUP	
  BY	
  NOSORT	
  	
  |	
  	
  	
  	
  	
  	
  	
  	
  	
  	
  	
  	
  	
  	
  	
  |	
  50000	
  |	
  	
  1464K|	
  	
  	
  	
  	
  	
  	
  |	
  	
  1325	
  	
  	
  (3)|	
  00:00:16	
  |
|	
  	
  	
  2	
  |	
  	
  	
  NESTED	
  LOOPS	
  	
  	
  	
  	
  	
  	
  	
  	
  |	
  	
  	
  	
  	
  	
  	
  	
  	
  	
  	
  	
  	
  	
  	
  |	
  	
  	
  246K|	
  	
  7212K|	
  	
  	
  	
  	
  	
  	
  |	
  	
  1325	
  	
  	
  (3)|	
  00:00:16	
  |
|	
  	
  	
  3	
  |	
  	
  	
  	
  NESTED	
  LOOPS	
  	
  	
  	
  	
  	
  	
  	
  |	
  	
  	
  	
  	
  	
  	
  	
  	
  	
  	
  	
  	
  	
  	
  |	
  	
  	
  246K|	
  	
  6010K|	
  	
  	
  	
  	
  	
  	
  |	
  	
  1313	
  	
  	
  (2)|	
  00:00:16	
  |
|	
  	
  	
  4	
  |	
  	
  	
  	
  	
  MERGE	
  JOIN	
  	
  	
  	
  	
  	
  	
  	
  	
  |	
  	
  	
  	
  	
  	
  	
  	
  	
  	
  	
  	
  	
  	
  	
  |	
  	
  	
  247K|	
  	
  4831K|	
  	
  	
  	
  	
  	
  	
  |	
  	
  1301	
  	
  	
  (1)|	
  00:00:16	
  |
|	
  	
  	
  5	
  |	
  	
  	
  	
  	
  	
  INDEX	
  FULL	
  SCAN	
  	
  	
  |	
  PK_ORDERITEMS	
  |	
  	
  	
  250K|	
  	
  2441K|	
  	
  	
  	
  	
  	
  	
  |	
  	
  1029	
  	
  	
  (1)|	
  00:00:13	
  |
|*	
  	
  6	
  |	
  	
  	
  	
  	
  	
  SORT	
  JOIN	
  	
  	
  	
  	
  	
  	
  	
  	
  |	
  	
  	
  	
  	
  	
  	
  	
  	
  	
  	
  	
  	
  	
  	
  |	
  50000	
  |	
  	
  	
  488K|	
  	
  1976K|	
  	
  	
  271	
  	
  	
  (1)|	
  00:00:04	
  |
|	
  	
  	
  7	
  |	
  	
  	
  	
  	
  	
  	
  TABLE	
  ACCESS	
  FULL|	
  ORDERS	
  	
  	
  	
  	
  	
  	
  	
  |	
  50000	
  |	
  	
  	
  488K|	
  	
  	
  	
  	
  	
  	
  |	
  	
  	
  	
  68	
  	
  	
  (0)|	
  00:00:01	
  |
|*	
  	
  8	
  |	
  	
  	
  	
  	
  INDEX	
  UNIQUE	
  SCAN	
  	
  |	
  PK_ITEMS	
  	
  	
  	
  	
  	
  |	
  	
  	
  	
  	
  1	
  |	
  	
  	
  	
  	
  5	
  |	
  	
  	
  	
  	
  	
  	
  |	
  	
  	
  	
  	
  0	
  	
  	
  (0)|	
  00:00:01	
  |
|*	
  	
  9	
  |	
  	
  	
  	
  INDEX	
  UNIQUE	
  SCAN	
  	
  	
  |	
  PK_CUSTOMERS	
  	
  |	
  	
  	
  	
  	
  1	
  |	
  	
  	
  	
  	
  5	
  |	
  	
  	
  	
  	
  	
  	
  |	
  	
  	
  	
  	
  0	
  	
  	
  (0)|	
  00:00:01	
  |
-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐
Predicate	
  Information	
  (identified	
  by	
  operation	
  id):
-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐
	
  	
  	
  6	
  -­‐	
  access("ORDERITEMS"."ORDER#"="ORDERS"."ORDER#")
	
  	
  	
  	
  	
  	
  	
  filter("ORDERITEMS"."ORDER#"="ORDERS"."ORDER#")
	
  	
  	
  8	
  -­‐	
  access("ORDERITEMS"."ITEM#"="ITEMS"."ITEM#")
	
  	
  	
  9	
  -­‐	
  access("ORDERS"."CUSTOMER#"="CUSTOMERS"."CUSTOMER#")
統計
-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐
	
  	
  	
  	
  	
  	
  	
  	
  	
  	
  0	
  	
  recursive	
  calls
	
  	
  	
  	
  	
  	
  	
  	
  	
  	
  0	
  	
  db	
  block	
  gets
	
  	
  	
  	
  	
  262017	
  	
  consistent	
  gets
	
  	
  	
  	
  	
  	
  	
  	
  244	
  	
  physical	
  reads
	
  	
  	
  	
  	
  	
  	
  	
  	
  	
  0	
  	
  redo	
  size
	
  	
  	
  	
  1126677	
  	
  bytes	
  sent	
  via	
  SQL*Net	
  to	
  client
	
  	
  	
  	
  	
  	
  37207	
  	
  bytes	
  received	
  via	
  SQL*Net	
  from	
  client
	
  	
  	
  	
  	
  	
  	
  3335	
  	
  SQL*Net	
  roundtrips	
  to/from	
  client
	
  	
  	
  	
  	
  	
  	
  	
  	
  	
  1	
  	
  sorts	
  (memory)
	
  	
  	
  	
  	
  	
  	
  	
  	
  	
  0	
  	
  sorts	
  (disk)
	
  	
  	
  	
  	
  	
  50000	
  	
  rows	
  processed

13年11月16日土曜日
参照整合性制約なし
実行計画
-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐
Plan	
  hash	
  value:	
  411877633
-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐
|	
  Id	
  	
  |	
  Operation	
  	
  	
  	
  	
  	
  	
  	
  	
  	
  	
  	
  	
  	
  |	
  Name	
  	
  	
  	
  	
  	
  	
  	
  	
  	
  |	
  Rows	
  	
  |	
  Bytes	
  |TempSpc|	
  Cost	
  (%CPU)|	
  Time	
  	
  	
  	
  	
  |
-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐
|	
  	
  	
  0	
  |	
  SELECT	
  STATEMENT	
  	
  	
  	
  	
  	
  	
  |	
  	
  	
  	
  	
  	
  	
  	
  	
  	
  	
  	
  	
  	
  	
  |	
  50000	
  |	
  	
  1464K|	
  	
  	
  	
  	
  	
  	
  |	
  	
  1325	
  	
  	
  (3)|	
  00:00:16	
  |
|	
  	
  	
  1	
  |	
  	
  SORT	
  GROUP	
  BY	
  NOSORT	
  	
  |	
  	
  	
  	
  	
  	
  	
  	
  	
  	
  	
  	
  	
  	
  	
  |	
  50000	
  |	
  	
  1464K|	
  	
  	
  	
  	
  	
  	
  |	
  	
  1325	
  	
  	
  (3)|	
  00:00:16	
  |
|	
  	
  	
  2	
  |	
  	
  	
  NESTED	
  LOOPS	
  	
  	
  	
  	
  	
  	
  	
  	
  |	
  	
  	
  	
  	
  	
  	
  	
  	
  	
  	
  	
  	
  	
  	
  |	
  	
  	
  246K|	
  	
  7212K|	
  	
  	
  	
  	
  	
  	
  |	
  	
  1325	
  	
  	
  (3)|	
  00:00:16	
  |
|	
  	
  	
  3	
  |	
  	
  	
  	
  NESTED	
  LOOPS	
  	
  	
  	
  	
  	
  	
  	
  |	
  	
  	
  	
  	
  	
  	
  	
  	
  	
  	
  	
  	
  	
  	
  |	
  	
  	
  246K|	
  	
  6010K|	
  	
  	
  	
  	
  	
  	
  |	
  	
  1313	
  	
  	
  (2)|	
  00:00:16	
  |
|	
  	
  	
  4	
  |	
  	
  	
  	
  	
  MERGE	
  JOIN	
  	
  	
  	
  	
  	
  	
  	
  	
  |	
  	
  	
  	
  	
  	
  	
  	
  	
  	
  	
  	
  	
  	
  	
  |	
  	
  	
  247K|	
  	
  4831K|	
  	
  	
  	
  	
  	
  	
  |	
  	
  1301	
  	
  	
  (1)|	
  00:00:16	
  |
|	
  	
  	
  5	
  |	
  	
  	
  	
  	
  	
  INDEX	
  FULL	
  SCAN	
  	
  	
  |	
  PK_ORDERITEMS	
  |	
  	
  	
  250K|	
  	
  2441K|	
  	
  	
  	
  	
  	
  	
  |	
  	
  1029	
  	
  	
  (1)|	
  00:00:13	
  |
|*	
  	
  6	
  |	
  	
  	
  	
  	
  	
  SORT	
  JOIN	
  	
  	
  	
  	
  	
  	
  	
  	
  |	
  	
  	
  	
  	
  	
  	
  	
  	
  	
  	
  	
  	
  	
  	
  |	
  50000	
  |	
  	
  	
  488K|	
  	
  1976K|	
  	
  	
  271	
  	
  	
  (1)|	
  00:00:04	
  |
|	
  	
  	
  7	
  |	
  	
  	
  	
  	
  	
  	
  TABLE	
  ACCESS	
  FULL|	
  ORDERS	
  	
  	
  	
  	
  	
  	
  	
  |	
  50000	
  |	
  	
  	
  488K|	
  	
  	
  	
  	
  	
  	
  |	
  	
  	
  	
  68	
  	
  	
  (0)|	
  00:00:01	
  |
|*	
  	
  8	
  |	
  	
  	
  	
  	
  INDEX	
  UNIQUE	
  SCAN	
  	
  |	
  PK_ITEMS	
  	
  	
  	
  	
  	
  |	
  	
  	
  	
  	
  1	
  |	
  	
  	
  	
  	
  5	
  |	
  	
  	
  	
  	
  	
  	
  |	
  	
  	
  	
  	
  0	
  	
  	
  (0)|	
  00:00:01	
  |
|*	
  	
  9	
  |	
  	
  	
  	
  INDEX	
  UNIQUE	
  SCAN	
  	
  	
  |	
  PK_CUSTOMERS	
  	
  |	
  	
  	
  	
  	
  1	
  |	
  	
  	
  	
  	
  5	
  |	
  	
  	
  	
  	
  	
  	
  |	
  	
  	
  	
  	
  0	
  	
  	
  (0)|	
  00:00:01	
  |
-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐
Predicate	
  Information	
  (identified	
  by	
  operation	
  id):
-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐
	
  	
  	
  6	
  -­‐	
  access("ORDERITEMS"."ORDER#"="ORDERS"."ORDER#")
	
  	
  	
  	
  	
  	
  	
  filter("ORDERITEMS"."ORDER#"="ORDERS"."ORDER#")
	
  	
  	
  8	
  -­‐	
  access("ORDERITEMS"."ITEM#"="ITEMS"."ITEM#")
	
  	
  	
  9	
  -­‐	
  access("ORDERS"."CUSTOMER#"="CUSTOMERS"."CUSTOMER#")
統計
-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐
	
  	
  	
  	
  	
  	
  	
  	
  	
  	
  0	
  	
  recursive	
  calls
	
  	
  	
  	
  	
  	
  	
  	
  	
  	
  0	
  	
  db	
  block	
  gets
	
  	
  	
  	
  	
  262017	
  	
  consistent	
  gets
	
  	
  	
  	
  	
  	
  	
  	
  244	
  	
  physical	
  reads
	
  	
  	
  	
  	
  	
  	
  	
  	
  	
  0	
  	
  redo	
  size
	
  	
  	
  	
  1126677	
  	
  bytes	
  sent	
  via	
  SQL*Net	
  to	
  client
	
  	
  	
  	
  	
  	
  37207	
  	
  bytes	
  received	
  via	
  SQL*Net	
  from	
  client
	
  	
  	
  	
  	
  	
  	
  3335	
  	
  SQL*Net	
  roundtrips	
  to/from	
  client
	
  	
  	
  	
  	
  	
  	
  	
  	
  	
  1	
  	
  sorts	
  (memory)
	
  	
  	
  	
  	
  	
  	
  	
  	
  	
  0	
  	
  sorts	
  (disk)
	
  	
  	
  	
  	
  	
  50000	
  	
  rows	
  processed

13年11月16日土曜日
参照整合性制約なし
実行計画
-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐
Plan	
  hash	
  value:	
  411877633
-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐
|	
  Id	
  	
  |	
  Operation	
  	
  	
  	
  	
  	
  	
  	
  	
  	
  	
  	
  	
  	
  |	
  Name	
  	
  	
  	
  	
  	
  	
  	
  	
  	
  |	
  Rows	
  	
  |	
  Bytes	
  |TempSpc|	
  Cost	
  (%CPU)|	
  Time	
  	
  	
  	
  	
  |
-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐
|	
  	
  	
  0	
  |	
  SELECT	
  STATEMENT	
  	
  	
  	
  	
  	
  	
  |	
  	
  	
  	
  	
  	
  	
  	
  	
  	
  	
  	
  	
  	
  	
  |	
  50000	
  |	
  	
  1464K|	
  	
  	
  	
  	
  	
  	
  |	
  	
  1325	
  	
  	
  (3)|	
  00:00:16	
  |
|	
  	
  	
  1	
  |	
  	
  SORT	
  GROUP	
  BY	
  NOSORT	
  	
  |	
  	
  	
  	
  	
  	
  	
  	
  	
  	
  	
  	
  	
  	
  	
  |	
  50000	
  |	
  	
  1464K|	
  	
  	
  	
  	
  	
  	
  |	
  	
  1325	
  	
  	
  (3)|	
  00:00:16	
  |
|	
  	
  	
  2	
  |	
  	
  	
  NESTED	
  LOOPS	
  	
  	
  	
  	
  	
  	
  	
  	
  |	
  	
  	
  	
  	
  	
  	
  	
  	
  	
  	
  	
  	
  	
  	
  |	
  	
  	
  246K|	
  	
  7212K|	
  	
  	
  	
  	
  	
  	
  |	
  	
  1325	
  	
  	
  (3)|	
  00:00:16	
  |
|	
  	
  	
  3	
  |	
  	
  	
  	
  NESTED	
  LOOPS	
  	
  	
  	
  	
  	
  	
  	
  |	
  	
  	
  	
  	
  	
  	
  	
  	
  	
  	
  	
  	
  	
  	
  |	
  	
  	
  246K|	
  	
  6010K|	
  	
  	
  	
  	
  	
  	
  |	
  	
  1313	
  	
  	
  (2)|	
  00:00:16	
  |
|	
  	
  	
  4	
  |	
  	
  	
  	
  	
  MERGE	
  JOIN	
  	
  	
  	
  	
  	
  	
  	
  	
  |	
  	
  	
  	
  	
  	
  	
  	
  	
  	
  	
  	
  	
  	
  	
  |	
  	
  	
  247K|	
  	
  4831K|	
  	
  	
  	
  	
  	
  	
  |	
  	
  1301	
  	
  	
  (1)|	
  00:00:16	
  |
|	
  	
  	
  5	
  |	
  	
  	
  	
  	
  	
  INDEX	
  FULL	
  SCAN	
  	
  	
  |	
  PK_ORDERITEMS	
  |	
  	
  	
  250K|	
  	
  2441K|	
  	
  	
  	
  	
  	
  	
  |	
  	
  1029	
  	
  	
  (1)|	
  00:00:13	
  |
|*	
  	
  6	
  |	
  	
  	
  	
  	
  	
  SORT	
  JOIN	
  	
  	
  	
  	
  	
  	
  	
  	
  |	
  	
  	
  	
  	
  	
  	
  	
  	
  	
  	
  	
  	
  	
  	
  |	
  50000	
  |	
  	
  	
  488K|	
  	
  1976K|	
  	
  	
  271	
  	
  	
  (1)|	
  00:00:04	
  |
|	
  	
  	
  7	
  |	
  	
  	
  	
  	
  	
  	
  TABLE	
  ACCESS	
  FULL|	
  ORDERS	
  	
  	
  	
  	
  	
  	
  	
  |	
  50000	
  |	
  	
  	
  488K|	
  	
  	
  	
  	
  	
  	
  |	
  	
  	
  	
  68	
  	
  	
  (0)|	
  00:00:01	
  |
|*	
  	
  8	
  |	
  	
  	
  	
  	
  INDEX	
  UNIQUE	
  SCAN	
  	
  |	
  PK_ITEMS	
  	
  	
  	
  	
  	
  |	
  	
  	
  	
  	
  1	
  |	
  	
  	
  	
  	
  5	
  |	
  	
  	
  	
  	
  	
  	
  |	
  	
  	
  	
  	
  0	
  	
  	
  (0)|	
  00:00:01	
  |
|*	
  	
  9	
  |	
  	
  	
  	
  INDEX	
  UNIQUE	
  SCAN	
  	
  	
  |	
  PK_CUSTOMERS	
  	
  |	
  	
  	
  	
  	
  1	
  |	
  	
  	
  	
  	
  5	
  |	
  	
  	
  	
  	
  	
  	
  |	
  	
  	
  	
  	
  0	
  	
  	
  (0)|	
  00:00:01	
  |
-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐
Predicate	
  Information	
  (identified	
  by	
  operation	
  id):
-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐
	
  	
  	
  6	
  -­‐	
  access("ORDERITEMS"."ORDER#"="ORDERS"."ORDER#")
	
  	
  	
  	
  	
  	
  	
  filter("ORDERITEMS"."ORDER#"="ORDERS"."ORDER#")
	
  	
  	
  8	
  -­‐	
  access("ORDERITEMS"."ITEM#"="ITEMS"."ITEM#")
	
  	
  	
  9	
  -­‐	
  access("ORDERS"."CUSTOMER#"="CUSTOMERS"."CUSTOMER#")
統計
-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐
	
  	
  	
  	
  	
  	
  	
  	
  	
  	
  0	
  	
  recursive	
  calls
	
  	
  	
  	
  	
  	
  	
  	
  	
  	
  0	
  	
  db	
  block	
  gets
	
  	
  	
  	
  	
  262017	
  	
  consistent	
  gets
	
  	
  	
  	
  	
  	
  	
  	
  244	
  	
  physical	
  reads
	
  	
  	
  	
  	
  	
  	
  	
  	
  	
  0	
  	
  redo	
  size
	
  	
  	
  	
  1126677	
  	
  bytes	
  sent	
  via	
  SQL*Net	
  to	
  client
	
  	
  	
  	
  	
  	
  37207	
  	
  bytes	
  received	
  via	
  SQL*Net	
  from	
  client
	
  	
  	
  	
  	
  	
  	
  3335	
  	
  SQL*Net	
  roundtrips	
  to/from	
  client
	
  	
  	
  	
  	
  	
  	
  	
  	
  	
  1	
  	
  sorts	
  (memory)
	
  	
  	
  	
  	
  	
  	
  	
  	
  	
  0	
  	
  sorts	
  (disk)
	
  	
  	
  	
  	
  	
  50000	
  	
  rows	
  processed

13年11月16日土曜日
参照整合性制約あり
オプティマイザーは賢い :)
実行計画
-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐
Plan	
  hash	
  value:	
  3325112419
-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐
|	
  Id	
  	
  |	
  Operation	
  	
  	
  	
  	
  	
  	
  	
  	
  	
  	
  	
  	
  |	
  Name	
  	
  	
  	
  	
  	
  	
  	
  	
  	
  	
  	
  |	
  Rows	
  	
  |	
  Bytes	
  |TempSpc|	
  Cost	
  (%CPU)|	
  Time	
  	
  	
  	
  	
  |
-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐
|	
  	
  	
  0	
  |	
  SELECT	
  STATEMENT	
  	
  	
  	
  	
  	
  |	
  	
  	
  	
  	
  	
  	
  	
  	
  	
  	
  	
  	
  	
  	
  	
  	
  |	
  50536	
  |	
  	
  	
  246K|	
  	
  	
  	
  	
  	
  	
  |	
  	
  	
  516	
  	
  	
  (2)|	
  00:00:07	
  |
|	
  	
  	
  1	
  |	
  	
  HASH	
  GROUP	
  BY	
  	
  	
  	
  	
  	
  	
  	
  |	
  	
  	
  	
  	
  	
  	
  	
  	
  	
  	
  	
  	
  	
  	
  	
  	
  |	
  50536	
  |	
  	
  	
  246K|	
  	
  2952K|	
  	
  	
  516	
  	
  	
  (2)|	
  00:00:07	
  |
|	
  	
  	
  2	
  |	
  	
  	
  INDEX	
  FAST	
  FULL	
  SCAN|	
  IX01_ORDERITEMS	
  |	
  	
  	
  250K|	
  	
  1220K|	
  	
  	
  	
  	
  	
  	
  |	
  	
  	
  145	
  	
  	
  (1)|	
  00:00:02	
  |
-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐
統計
-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐
	
  	
  	
  	
  	
  	
  	
  	
  	
  	
  0	
  	
  recursive	
  calls
	
  	
  	
  	
  	
  	
  	
  	
  	
  	
  0	
  	
  db	
  block	
  gets
	
  	
  	
  	
  	
  	
  	
  	
  589	
  	
  consistent	
  gets
	
  	
  	
  	
  	
  	
  	
  	
  	
  	
  0	
  	
  physical	
  reads
	
  	
  	
  	
  	
  	
  	
  	
  	
  	
  0	
  	
  redo	
  size
	
  	
  	
  	
  1126677	
  	
  bytes	
  sent	
  via	
  SQL*Net	
  to	
  client
	
  	
  	
  	
  	
  	
  37207	
  	
  bytes	
  received	
  via	
  SQL*Net	
  from	
  client
	
  	
  	
  	
  	
  	
  	
  3335	
  	
  SQL*Net	
  roundtrips	
  to/from	
  client
	
  	
  	
  	
  	
  	
  	
  	
  	
  	
  0	
  	
  sorts	
  (memory)
	
  	
  	
  	
  	
  	
  	
  	
  	
  	
  0	
  	
  sorts	
  (disk)
	
  	
  	
  	
  	
  	
  50000	
  	
  rows	
  processed

13年11月16日土曜日
参照整合性制約あり
オプティマイザーは賢い :)
実行計画
-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐
Plan	
  hash	
  value:	
  3325112419
-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐
|	
  Id	
  	
  |	
  Operation	
  	
  	
  	
  	
  	
  	
  	
  	
  	
  	
  	
  	
  |	
  Name	
  	
  	
  	
  	
  	
  	
  	
  	
  	
  	
  	
  |	
  Rows	
  	
  |	
  Bytes	
  |TempSpc|	
  Cost	
  (%CPU)|	
  Time	
  	
  	
  	
  	
  |
-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐
|	
  	
  	
  0	
  |	
  SELECT	
  STATEMENT	
  	
  	
  	
  	
  	
  |	
  	
  	
  	
  	
  	
  	
  	
  	
  	
  	
  	
  	
  	
  	
  	
  	
  |	
  50536	
  |	
  	
  	
  246K|	
  	
  	
  	
  	
  	
  	
  |	
  	
  	
  516	
  	
  	
  (2)|	
  00:00:07	
  |
|	
  	
  	
  1	
  |	
  	
  HASH	
  GROUP	
  BY	
  	
  	
  	
  	
  	
  	
  	
  |	
  	
  	
  	
  	
  	
  	
  	
  	
  	
  	
  	
  	
  	
  	
  	
  	
  |	
  50536	
  |	
  	
  	
  246K|	
  	
  2952K|	
  	
  	
  516	
  	
  	
  (2)|	
  00:00:07	
  |
|	
  	
  	
  2	
  |	
  	
  	
  INDEX	
  FAST	
  FULL	
  SCAN|	
  IX01_ORDERITEMS	
  |	
  	
  	
  250K|	
  	
  1220K|	
  	
  	
  	
  	
  	
  	
  |	
  	
  	
  145	
  	
  	
  (1)|	
  00:00:02	
  |
-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐
統計
-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐
	
  	
  	
  	
  	
  	
  	
  	
  	
  	
  0	
  	
  recursive	
  calls
	
  	
  	
  	
  	
  	
  	
  	
  	
  	
  0	
  	
  db	
  block	
  gets
	
  	
  	
  	
  	
  	
  	
  	
  589	
  	
  consistent	
  gets
	
  	
  	
  	
  	
  	
  	
  	
  	
  	
  0	
  	
  physical	
  reads
	
  	
  	
  	
  	
  	
  	
  	
  	
  	
  0	
  	
  redo	
  size
	
  	
  	
  	
  1126677	
  	
  bytes	
  sent	
  via	
  SQL*Net	
  to	
  client
	
  	
  	
  	
  	
  	
  37207	
  	
  bytes	
  received	
  via	
  SQL*Net	
  from	
  client
	
  	
  	
  	
  	
  	
  	
  3335	
  	
  SQL*Net	
  roundtrips	
  to/from	
  client
	
  	
  	
  	
  	
  	
  	
  	
  	
  	
  0	
  	
  sorts	
  (memory)
	
  	
  	
  	
  	
  	
  	
  	
  	
  	
  0	
  	
  sorts	
  (disk)
	
  	
  	
  	
  	
  	
  50000	
  	
  rows	
  processed

13年11月16日土曜日
参照整合性制約あり
オプティマイザーは賢い :)
実行計画
-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐
Plan	
  hash	
  value:	
  3325112419
-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐
|	
  Id	
  	
  |	
  Operation	
  	
  	
  	
  	
  	
  	
  	
  	
  	
  	
  	
  	
  |	
  Name	
  	
  	
  	
  	
  	
  	
  	
  	
  	
  	
  	
  |	
  Rows	
  	
  |	
  Bytes	
  |TempSpc|	
  Cost	
  (%CPU)|	
  Time	
  	
  	
  	
  	
  |
-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐
|	
  	
  	
  0	
  |	
  SELECT	
  STATEMENT	
  	
  	
  	
  	
  	
  |	
  	
  	
  	
  	
  	
  	
  	
  	
  	
  	
  	
  	
  	
  	
  	
  	
  |	
  50536	
  |	
  	
  	
  246K|	
  	
  	
  	
  	
  	
  	
  |	
  	
  	
  516	
  	
  	
  (2)|	
  00:00:07	
  |
|	
  	
  	
  1	
  |	
  	
  HASH	
  GROUP	
  BY	
  	
  	
  	
  	
  	
  	
  	
  |	
  	
  	
  	
  	
  	
  	
  	
  	
  	
  	
  	
  	
  	
  	
  	
  	
  |	
  50536	
  |	
  	
  	
  246K|	
  	
  2952K|	
  	
  	
  516	
  	
  	
  (2)|	
  00:00:07	
  |
|	
  	
  	
  2	
  |	
  	
  	
  INDEX	
  FAST	
  FULL	
  SCAN|	
  IX01_ORDERITEMS	
  |	
  	
  	
  250K|	
  	
  1220K|	
  	
  	
  	
  	
  	
  	
  |	
  	
  	
  145	
  	
  	
  (1)|	
  00:00:02	
  |
-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐
統計
-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐
	
  	
  	
  	
  	
  	
  	
  	
  	
  	
  0	
  	
  recursive	
  calls
	
  	
  	
  	
  	
  	
  	
  	
  	
  	
  0	
  	
  db	
  block	
  gets
	
  	
  	
  	
  	
  	
  	
  	
  589	
  	
  consistent	
  gets
	
  	
  	
  	
  	
  	
  	
  	
  	
  	
  0	
  	
  physical	
  reads
	
  	
  	
  	
  	
  	
  	
  	
  	
  	
  0	
  	
  redo	
  size
	
  	
  	
  	
  1126677	
  	
  bytes	
  sent	
  via	
  SQL*Net	
  to	
  client
	
  	
  	
  	
  	
  	
  37207	
  	
  bytes	
  received	
  via	
  SQL*Net	
  from	
  client
	
  	
  	
  	
  	
  	
  	
  3335	
  	
  SQL*Net	
  roundtrips	
  to/from	
  client
	
  	
  	
  	
  	
  	
  	
  	
  	
  	
  0	
  	
  sorts	
  (memory)
	
  	
  	
  	
  	
  	
  	
  	
  	
  	
  0	
  	
  sorts	
  (disk)
	
  	
  	
  	
  	
  	
  50000	
  	
  rows	
  processed

13年11月16日土曜日
無駄に結合してませんか?

13年11月16日土曜日
DWHでも使えるんですよ:)

13年11月16日土曜日
Oracle®  Databaseデータ・ウェアハウス・ガイド
11gリリース2(11.2)  /  整合性制約

http://docs.oracle.com/cd/E16338_01/server.112/
b56309/constra.htm#i1006284

13年11月16日土曜日
アレルギーが発症してしま
った場合、一生うまく付き
合って行くしかない。
予防はアレルゲンを溜め込
みすぎないこと。
13年11月16日土曜日
アレルギーが発症してしま
った場合、一生うまく付き
合って行くしかない。
予防はアレルゲンを溜め込
みすぎないこと。
13年11月16日土曜日

抗アレルギー剤を手に入れた。
まとめ
過フィルタリング症候群(治癒)
クエリー分裂症(治癒)
バッファキャッシュ欠乏症(治癒)
参照整合性制約アレルギー(?)

13年11月16日土曜日
最後に
2007年2月14日、 Insight World 2007というイベントがありました。
そのキーノートでアンニョ・コークさんがおっしゃっていたことを今でも思い出します。

アンニョ・コーク  /  "Oracle  Performance  Management:  Past,  Present  and  Future"
“Oracle10gがリリースされ初期化パラメータが少なくなり、Oracle⾃自⾝身が各パラメータを
  調整するようになった今、DBAに求められる役割は、Oracleの細かなチュ­−ニングよりも
  アプリケーション側の問題を指摘したりすることにシフトしてきている。
  ....
  パフォーマンス劣劣化問題の原因の多くは、データベース側というよりも
  アプリケーション側にあることが多くなっている.”

13年11月16日土曜日
最後に
2007年2月14日、 Insight World 2007というイベントがありました。
そのキーノートでアンニョ・コークさんがおっしゃっていたことを今でも思い出します。

アンニョ・コーク  /  "Oracle  Performance  Management:  Past,  Present  and  Future"
“Oracle10gがリリースされ初期化パラメータが少なくなり、Oracle⾃自⾝身が各パラメータを
  調整するようになった今、DBAに求められる役割は、Oracleの細かなチュ­−ニングよりも
  アプリケーション側の問題を指摘したりすることにシフトしてきている。
  ....
  パフォーマンス劣劣化問題の原因の多くは、データベース側というよりも
  アプリケーション側にあることが多くなっている.”

13年11月16日土曜日
ご清聴ありがとうございました

http://www.jpoug.org

13年11月16日土曜日

db tech showcase Tokyo 2013 - A35 特濃JPOUG:潮溜まりでジャブジャブ、SQLチューニング

  • 1.
    潮溜まりでジャブジャブ、 SQLチューニング Rock Pool /Michael Hiroshi Sekiguchi ( @discus_hamburg ) 13年11月16日土曜日
  • 2.
    自己紹介 @discus_hamburg 関口 裕士 (屋号 Stargrass Software) 最近の仕事: Software Engineer < DB Engineer 最近は医者のような問診に興味を持っている JPOUG ボードメンバー Oracle ACE (2012) Blog : Mac De Oracle / http://discus-hamburg.cocolog-nifty.com 13年11月16日土曜日
  • 3.
    皆が、Deep   dive、Deep  diveというの で、Oracle   Coreの深い海ではなく沢⼭山 のSQL⽂文が泳ぐ浅瀬へShallow   Diveす ることに決めた天の邪⻤⿁鬼。 13年11月16日土曜日
  • 4.
  • 5.
  • 6.
  • 7.
  • 8.
  • 9.
  • 10.
  • 11.
  • 12.
  • 13.
  • 14.
    釣り上げたSQL文 SELECT                /*+  USE_NL(tab1  tab2  tab3  tab4)  */                tab4.* FROM                tab1                INNER  JOIN  tab2                ON                                tab1.unique#  =  tab2.unique#                  AND  tab1.unique#  IN  (1,2)                INNER  JOIN  tab3                ON                                tab2.unique#  =  tab3.unique#                  AND  tab2.branch#  =  tab3.branch#                INNER  JOIN  tab4                ON                                tab3.unique#  =  tab4.unique#                  AND  tab3.branch#  =  tab4.branch#                AND  tab3.loc#        =  tab4.loc# ; 13年11月16日土曜日
  • 15.
    釣り上げたSQL文 (実行計画) -­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐ |  Id    |  Operation                                        |  Name        |  Rows    |  Bytes  |  Cost  (%CPU)|  Time          |  Inst      |IN-­‐OUT| -­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐ |      0  |  SELECT  STATEMENT                          |                  |  20000  |        11M|      603      (0)|  00:00:01  |                |            | |      1  |    NESTED  LOOPS                                |                  |              |              |                        |                    |                |            | |      2  |      NESTED  LOOPS                              |                  |  20000  |        11M|      603      (0)|  00:00:01  |                |            | |      3  |        NESTED  LOOPS                            |                  |      200  |  15600  |          3      (0)|  00:00:01  |                |            | |      4  |          NESTED  LOOPS                          |                  |      200  |  13000  |          3      (0)|  00:00:01  |                |            | |      5  |            REMOTE                                    |  TAB3        |      200  |    7800  |          3      (0)|  00:00:01  |  PDBOR~  |  R-­‐>S  | |      6  |            REMOTE                                    |  TAB2        |          1  |        26  |          0      (0)|  00:00:01  |  PDBOR~  |  R-­‐>S  | |      7  |          REMOTE                                      |  TAB1        |          1  |        13  |          0      (0)|  00:00:01  |  PDBOR~  |  R-­‐>S  | |*    8  |        INDEX  RANGE  SCAN                    |  PK_TAB4  |          1  |              |          2      (0)|  00:00:01  |                |            | |      9  |      TABLE  ACCESS  BY  INDEX  ROWID|  TAB4        |      100  |  51400  |          3      (0)|  00:00:01  |                |            | -­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐ Predicate  Information  (identified  by  operation  id): -­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐      8  -­‐  access("TAB3"."UNIQUE#"="TAB4"."UNIQUE#"  AND  "TAB3"."BRANCH#"="TAB4"."BRANCH#"  AND                            "TAB3"."LOC#"="TAB4"."LOC#")              filter("TAB4"."UNIQUE#"=1  OR  "TAB4"."UNIQUE#"=2) 13年11月16日土曜日
  • 16.
    釣り上げたSQL文 (実行計画) -­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐ |  Id    |  Operation                                        |  Name        |  Rows    |  Bytes  |  Cost  (%CPU)|  Time          |  Inst      |IN-­‐OUT| -­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐ |      0  |  SELECT  STATEMENT                          |                  |  20000  |        11M|      603      (0)|  00:00:01  |                |            | |      1  |    NESTED  LOOPS                                |                  |              |              |                        |                    |                |            | |      2  |      NESTED  LOOPS                              |                  |  20000  |        11M|      603      (0)|  00:00:01  |                |            | |      3  |        NESTED  LOOPS                            |                  |      200  |  15600  |          3      (0)|  00:00:01  |                |            | |      4  |          NESTED  LOOPS                          |                  |      200  |  13000  |          3      (0)|  00:00:01  |                |            | |      5  |            REMOTE                                    |  TAB3        |      200  |    7800  |          3      (0)|  00:00:01  |  PDBOR~  |  R-­‐>S  | |      6  |            REMOTE                                    |  TAB2        |          1  |        26  |          0      (0)|  00:00:01  |  PDBOR~  |  R-­‐>S  | |      7  |          REMOTE                                      |  TAB1        |          1  |        13  |          0      (0)|  00:00:01  |  PDBOR~  |  R-­‐>S  | |*    8  |        INDEX  RANGE  SCAN                    |  PK_TAB4  |          1  |              |          2      (0)|  00:00:01  |                |            | |      9  |      TABLE  ACCESS  BY  INDEX  ROWID|  TAB4        |      100  |  51400  |          3      (0)|  00:00:01  |                |            | -­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐ Predicate  Information  (identified  by  operation  id): -­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐      8  -­‐  access("TAB3"."UNIQUE#"="TAB4"."UNIQUE#"  AND  "TAB3"."BRANCH#"="TAB4"."BRANCH#"  AND                            "TAB3"."LOC#"="TAB4"."LOC#")              filter("TAB4"."UNIQUE#"=1  OR  "TAB4"."UNIQUE#"=2) 13年11月16日土曜日
  • 17.
    釣り上げたSQL文 (DB Link..) ●USER_DB_LINKSより DB_LINK        USERNAME      HOST -­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐  -­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐  -­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐ PDBORCL_R    SCOTT            PDBORCL_R ●USER_SYNONYMSより SYNONYM_NAME                  TABLE_NAME      DB_LINK -­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐  -­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐  -­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐ TAB1                                  TAB1                  PDBORCL_R TAB2                                  TAB2                  PDBORCL_R TAB3                                  TAB3                  PDBORCL_R 13年11月16日土曜日
  • 18.
    釣り上げたSQL文 (DB Link..) ●USER_DB_LINKSより DB_LINK        USERNAME      HOST -­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐  -­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐  -­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐ PDBORCL_R    SCOTT            PDBORCL_R DB Link先は1つで 3表が同一リモートデ ータベースに存在する ●USER_SYNONYMSより SYNONYM_NAME                  TABLE_NAME      DB_LINK -­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐  -­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐  -­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐ TAB1                                  TAB1                  PDBORCL_R TAB2                                  TAB2                  PDBORCL_R TAB3                                  TAB3                  PDBORCL_R 13年11月16日土曜日
  • 19.
  • 20.
  • 21.
    釣り上げたSQL文 (実行計画) -­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐ |  Id    |  Operation                                        |  Name        |  Rows    |  Bytes  |  Cost  (%CPU)|  Time          |  Inst      |IN-­‐OUT| -­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐ |      0  |  SELECT  STATEMENT                          |                  |  20000  |        11M|      603      (0)|  00:00:01  |                |            | |      1  |    NESTED  LOOPS                                |                  |              |              |                        |                    |                |            | |      2  |      NESTED  LOOPS                              |                  |  20000  |        11M|      603      (0)|  00:00:01  |                |            | |      3  |        NESTED  LOOPS                            |                  |      200  |  15600  |          3      (0)|  00:00:01  |                |            | |      4  |          NESTED  LOOPS                          |                  |      200  |  13000  |          3      (0)|  00:00:01  |                |            | |      5  |            REMOTE                                    |  TAB3        |      200  |    7800  |          3      (0)|  00:00:01  |  PDBOR~  |  R-­‐>S  | |      6  |            REMOTE                                    |  TAB2        |          1  |        26  |          0      (0)|  00:00:01  |  PDBOR~  |  R-­‐>S  | |      7  |          REMOTE                                      |  TAB1        |          1  |        13  |          0      (0)|  00:00:01  |  PDBOR~  |  R-­‐>S  | |*    8  |        INDEX  RANGE  SCAN                    |  PK_TAB4  |          1  |              |          2      (0)|  00:00:01  |                |            | |      9  |      TABLE  ACCESS  BY  INDEX  ROWID|  TAB4        |      100  |  51400  |          3      (0)|  00:00:01  |                |            | -­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐ Predicate  Information  (identified  by  operation  id): -­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐      8  -­‐  access("TAB3"."UNIQUE#"="TAB4"."UNIQUE#"  AND  "TAB3"."BRANCH#"="TAB4"."BRANCH#"  AND                            "TAB3"."LOC#"="TAB4"."LOC#")              filter("TAB4"."UNIQUE#"=1  OR  "TAB4"."UNIQUE#"=2) 13年11月16日土曜日
  • 22.
    釣り上げたSQL文 (実行計画) -­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐ |  Id    |  Operation                                        |  Name        |  Rows    |  Bytes  |  Cost  (%CPU)|  Time          |  Inst      |IN-­‐OUT| -­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐ |      0  |  SELECT  STATEMENT                          |                  |  20000  |        11M|      603      (0)|  00:00:01  |                |            | |      1  |    NESTED  LOOPS                                |                  |              |              |                        |                    |                |            | |      2  |      NESTED  LOOPS                              |                  |  20000  |        11M|      603      (0)|  00:00:01  |                |            | |      3  |        NESTED  LOOPS                            |                  |      200  |  15600  |          3      (0)|  00:00:01  |                |            | |      4  |          NESTED  LOOPS                          |                  |      200  |  13000  |          3      (0)|  00:00:01  |                |            | |      5  |            REMOTE                                    |  TAB3        |      200  |    7800  |          3      (0)|  00:00:01  |  PDBOR~  |  R-­‐>S  | |      6  |            REMOTE                                    |  TAB2        |          1  |        26  |          0      (0)|  00:00:01  |  PDBOR~  |  R-­‐>S  | |      7  |          REMOTE                                      |  TAB1        |          1  |        13  |          0      (0)|  00:00:01  |  PDBOR~  |  R-­‐>S  | |*    8  |        INDEX  RANGE  SCAN                    |  PK_TAB4  |          1  |              |          2      (0)|  00:00:01  |                |            | |      9  |      TABLE  ACCESS  BY  INDEX  ROWID|  TAB4        |      100  |  51400  |          3      (0)|  00:00:01  |                |            | -­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐ Predicate  Information  (identified  by  operation  id): -­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐ この実行計画はローカルデー      8  -­‐  access("TAB3"."UNIQUE#"="TAB4"."UNIQUE#"  AND  "TAB3"."BRANCH#"="TAB4"."BRANCH#"  AND                            "TAB3"."LOC#"="TAB4"."LOC#")              filter("TAB4"."UNIQUE#"=1  OR  "TAB4"."UNIQUE#"=2) タベースで取得されたもの 13年11月16日土曜日
  • 23.
    リモートクエリーの実行計画 Remote  SQL  Information  (identified  by  operation  id): -­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐      5  -­‐  SELECT  /*+  USE_NL  ("TAB3")  */  "UNIQUE#","BRANCH#"              ,"LOC#"  FROM  "TAB3"  "TAB3"  WHERE              "UNIQUE#"=1  OR  "UNIQUE#"=2  (accessing  'PDBORCL_R'  )      6  -­‐  SELECT  /*+  USE_NL  ("TAB2")  */  "UNIQUE#","BRANCH#"                  FROM  "TAB2"  "TAB2"  WHERE  "BRANCH#"=:1                AND  "UNIQUE#"=:2  AND  ("UNIQUE#"=1  OR  "UNIQUE#"=2)                  (accessing  'PDBORCL_R'  )      7  -­‐  SELECT  /*+  USE_NL  ("TAB1")  */  "UNIQUE#"                  FROM  "TAB1"  "TAB1"  WHERE  "UNIQUE#"=:1  AND                ("UNIQUE#"=1  OR  "UNIQUE#"=2)  (accessing  'PDBORCL_R'  ) explain plan文などでオプティマイザーが 切り出したリモートクエリーを確認 13年11月16日土曜日
  • 24.
    リモートクエリーの実行計画 Remote  SQL  Information  (identified  by  operation  id): -­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐      5  -­‐  SELECT  /*+  USE_NL  ("TAB3")  */  "UNIQUE#","BRANCH#"              ,"LOC#"  FROM  "TAB3"  "TAB3"  WHERE              "UNIQUE#"=1  OR  "UNIQUE#"=2  (accessing  'PDBORCL_R'  )      6  -­‐  SELECT  /*+  USE_NL  ("TAB2")  */  "UNIQUE#","BRANCH#"                  FROM  "TAB2"  "TAB2"  WHERE  "BRANCH#"=:1                AND  "UNIQUE#"=:2  AND  ("UNIQUE#"=1  OR  "UNIQUE#"=2)                  (accessing  'PDBORCL_R'  )      7  -­‐  SELECT  /*+  USE_NL  ("TAB1")  */  "UNIQUE#"                  FROM  "TAB1"  "TAB1"  WHERE  "UNIQUE#"=:1  AND                ("UNIQUE#"=1  OR  "UNIQUE#"=2)  (accessing  'PDBORCL_R'  ) これらのSQL文はリモートデータベースで実 行されるため、実行計画はリモートデータベ ース上で確認する必要がある。 13年11月16日土曜日
  • 25.
    リモートクエリーの 実行計画① Remote  SQL  Information  (identified  by  operation  id): -­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐      5  -­‐  SELECT  /*+  USE_NL  ("TAB3")  */  "UNIQUE#","BRANCH#"              ,"LOC#"  FROM  "TAB3"  "TAB3"  WHERE              "UNIQUE#"=1  OR  "UNIQUE#"=2  (accessing  'PDBORCL_R'  ) -­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐ |  Id    |  Operation                  |  Name        |  Rows    |  Bytes  |  Cost  (%CPU)|  Time          | -­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐ |      0  |  SELECT  STATEMENT    |                  |      200  |    2000  |          3      (0)|  00:00:01  | |      1  |    INLIST  ITERATOR    |                  |              |              |                        |                    | |*    2  |      INDEX  RANGE  SCAN|  PK_TAB3  |      200  |    2000  |          3      (0)|  00:00:01  | -­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐ 13年11月16日土曜日
  • 26.
    リモートクエリーの 実行計画① Remote  SQL  Information  (identified  by  operation  id): -­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐      5  -­‐  SELECT  /*+  USE_NL  ("TAB3")  */  "UNIQUE#","BRANCH#"              ,"LOC#"  FROM  "TAB3"  "TAB3"  WHERE              "UNIQUE#"=1  OR  "UNIQUE#"=2  (accessing  'PDBORCL_R'  ) -­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐ |  Id    |  Operation                  |  Name        |  Rows    |  Bytes  |  Cost  (%CPU)|  Time          | -­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐ |      0  |  SELECT  STATEMENT    |                  |      200  |    2000  |          3      (0)|  00:00:01  | |      1  |    INLIST  ITERATOR    |                  |              |              |                        |                    | |*    2  |      INDEX  RANGE  SCAN|  PK_TAB3  |      200  |    2000  |          3      (0)|  00:00:01  | -­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐ チューニングが必要だとは 思えない... 13年11月16日土曜日
  • 27.
    リモートクエリーの 実行計画② Remote  SQL  Information  (identified  by  operation  id): -­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐        6  -­‐  SELECT  /*+  USE_NL  ("TAB2")  */  "UNIQUE#","BRANCH#"                  FROM  "TAB2"  "TAB2"  WHERE  "BRANCH#"=:1                AND  "UNIQUE#"=:2  AND  ("UNIQUE#"=1  OR  "UNIQUE#"=2)                  (accessing  'PDBORCL_R'  ) -­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐ |  Id    |  Operation                    |  Name        |  Rows    |  Bytes  |  Cost  (%CPU)|  Time          | -­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐ |      0  |  SELECT  STATEMENT      |                  |          1  |          7  |          1      (0)|  00:00:01  | |*    1  |    FILTER                        |                  |              |              |                        |                    | |*    2  |      INDEX  UNIQUE  SCAN|  PK_TAB2  |          1  |          7  |          1      (0)|  00:00:01  | -­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐ 13年11月16日土曜日
  • 28.
    リモートクエリーの 実行計画② Remote  SQL  Information  (identified  by  operation  id): -­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐        6  -­‐  SELECT  /*+  USE_NL  ("TAB2")  */  "UNIQUE#","BRANCH#"                  FROM  "TAB2"  "TAB2"  WHERE  "BRANCH#"=:1                AND  "UNIQUE#"=:2  AND  ("UNIQUE#"=1  OR  "UNIQUE#"=2)                  (accessing  'PDBORCL_R'  ) -­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐ |  Id    |  Operation                    |  Name        |  Rows    |  Bytes  |  Cost  (%CPU)|  Time          | -­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐ |      0  |  SELECT  STATEMENT      |                  |          1  |          7  |          1      (0)|  00:00:01  | |*    1  |    FILTER                        |                  |              |              |                        |                    | |*    2  |      INDEX  UNIQUE  SCAN|  PK_TAB2  |          1  |          7  |          1      (0)|  00:00:01  | -­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐ チューニングが必要だとは 思えない... 13年11月16日土曜日
  • 29.
    リモートクエリーの 実行計画③ Remote  SQL  Information  (identified  by  operation  id): -­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐    7  -­‐  SELECT  /*+  USE_NL  ("TAB1")  */  "UNIQUE#"                  FROM  "TAB1"  "TAB1"  WHERE  "UNIQUE#"=:1  AND                ("UNIQUE#"=1  OR  "UNIQUE#"=2)  (accessing  'PDBORCL_R'  ) -­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐ |  Id    |  Operation                    |  Name        |  Rows    |  Bytes  |  Cost  (%CPU)|  Time          | -­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐ |      0  |  SELECT  STATEMENT      |                  |          1  |          4  |          1      (0)|  00:00:01  | |*    1  |    FILTER                        |                  |              |              |                        |                    | |*    2  |      INDEX  UNIQUE  SCAN|  PK_TAB1  |          1  |          4  |          1      (0)|  00:00:01  | -­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐ 13年11月16日土曜日
  • 30.
    リモートクエリーの 実行計画③ Remote  SQL  Information  (identified  by  operation  id): -­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐    7  -­‐  SELECT  /*+  USE_NL  ("TAB1")  */  "UNIQUE#"                  FROM  "TAB1"  "TAB1"  WHERE  "UNIQUE#"=:1  AND                ("UNIQUE#"=1  OR  "UNIQUE#"=2)  (accessing  'PDBORCL_R'  ) -­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐ |  Id    |  Operation                    |  Name        |  Rows    |  Bytes  |  Cost  (%CPU)|  Time          | -­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐ |      0  |  SELECT  STATEMENT      |                  |          1  |          4  |          1      (0)|  00:00:01  | |*    1  |    FILTER                        |                  |              |              |                        |                    | |*    2  |      INDEX  UNIQUE  SCAN|  PK_TAB1  |          1  |          4  |          1      (0)|  00:00:01  | -­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐ チューニングが必要だとは 思えない... 13年11月16日土曜日
  • 31.
    リモートクエリーの分析結果 -­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐ |  Id    |  Operation                  |  Name        |  Rows    |  Bytes  |  Cost  (%CPU)|  Time          | -­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐ |      0  |  SELECT  STATEMENT    |                  |      200  |    2000  |          3      (0)|  00:00:01  | |      1  |    INLIST  ITERATOR    |                  |              |              |                        |                    | |*    2  |      INDEX  RANGE  SCAN|  PK_TAB3  |      200  |    2000  |          3      (0)|  00:00:01  | -­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐ -­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐ |  Id    |  Operation                    |  Name        |  Rows    |  Bytes  |  Cost  (%CPU)|  Time          | -­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐ |      0  |  SELECT  STATEMENT      |                  |          1  |          7  |          1      (0)|  00:00:01  | |*    1  |    FILTER                        |                  |              |              |                        |                    | |*    2  |      INDEX  UNIQUE  SCAN|  PK_TAB2  |          1  |          7  |          1      (0)|  00:00:01  | -­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐ -­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐ |  Id    |  Operation                    |  Name        |  Rows    |  Bytes  |  Cost  (%CPU)|  Time          | -­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐ |      0  |  SELECT  STATEMENT      |                  |          1  |          4  |          1      (0)|  00:00:01  | |*    1  |    FILTER                        |                  |              |              |                        |                    | |*    2  |      INDEX  UNIQUE  SCAN|  PK_TAB1  |          1  |          4  |          1      (0)|  00:00:01  | -­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐ 13年11月16日土曜日
  • 32.
    リモートクエリーの分析結果 -­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐ |  Id    |  Operation                  |  Name        |  Rows    |  Bytes  |  Cost  (%CPU)|  Time          | -­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐ |      0  |  SELECT  STATEMENT    |                  |      200  |    2000  |          3      (0)|  00:00:01  | |      1  |    INLIST  ITERATOR    |                  |              |              |                        |                    | |*    2  |      INDEX  RANGE  SCAN|  PK_TAB3  |      200  |    2000  |          3      (0)|  00:00:01  | -­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐ -­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐ |  Id    |  Operation                    |  Name        |  Rows    |  Bytes  |  Cost  (%CPU)|  Time          | -­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐ |      0  |  SELECT  STATEMENT      |                  |          1  |          7  |          1      (0)|  00:00:01  | |*    1  |    FILTER                        |                  |              |              |                        |                    | |*    2  |      INDEX  UNIQUE  SCAN|  PK_TAB2  |          1  |          7  |          1      (0)|  00:00:01  | -­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐ -­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐ |  Id    |  Operation                    |  Name        |  Rows    |  Bytes  |  Cost  (%CPU)|  Time          | 3本のリモートクエリは個別は、個別に発行 -­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐ されており、実行計画は単純であり、SQL文 |      0  |  SELECT  STATEMENT      |                  |          1  |          4  |          1      (0)|  00:00:01  | |*    1  |    FILTER                        |                  |              |              |                        |                    | 単体ではチューニングが必要という状態には |*    2  |      INDEX  UNIQUE  SCAN|  PK_TAB1  |          1  |          4  |          1      (0)|  00:00:01  | ない.... -­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐ ほかにチューニング可能な箇所はないか....... 13年11月16日土曜日
  • 33.
    改善できそうな箇所 -­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐ |  Id    |  Operation                                        |  Name        |  Rows    |  Bytes  |  Cost  (%CPU)|  Time          |  Inst      |IN-­‐OUT| -­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐ |      0  |  SELECT  STATEMENT                          |                  |  20000  |        11M|      603      (0)|  00:00:01  |                |            | |      1  |    NESTED  LOOPS                                |                  |              |              |                        |                    |                |            | |      2  |      NESTED  LOOPS                              |                  |  20000  |        11M|      603      (0)|  00:00:01  |                |            | |      3  |        NESTED  LOOPS                            |                  |      200  |  15600  |          3      (0)|  00:00:01  |                |            | |      4  |          NESTED  LOOPS                          |                  |      200  |  13000  |          3      (0)|  00:00:01  |                |            | |      5  |            REMOTE                                    |  TAB3        |      200  |    7800  |          3      (0)|  00:00:01  |  PDBOR~  |  R-­‐>S  | |      6  |            REMOTE                                    |  TAB2        |          1  |        26  |          0      (0)|  00:00:01  |  PDBOR~  |  R-­‐>S  | |      7  |          REMOTE                                      |  TAB1        |          1  |        13  |          0      (0)|  00:00:01  |  PDBOR~  |  R-­‐>S  | |*    8  |        INDEX  RANGE  SCAN                    |  PK_TAB4  |          1  |              |          2      (0)|  00:00:01  |                |            | |      9  |      TABLE  ACCESS  BY  INDEX  ROWID|  TAB4        |      100  |  51400  |          3      (0)|  00:00:01  |                |            | -­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐ Predicate  Information  (identified  by  operation  id): -­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐      8  -­‐  access("TAB3"."UNIQUE#"="TAB4"."UNIQUE#"  AND  "TAB3"."BRANCH#"="TAB4"."BRANCH#"  AND                            "TAB3"."LOC#"="TAB4"."LOC#")              filter("TAB4"."UNIQUE#"=1  OR  "TAB4"."UNIQUE#"=2) 13年11月16日土曜日
  • 34.
    改善できそうな箇所 -­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐ |  Id    |  Operation                                        |  Name        |  Rows    |  Bytes  |  Cost  (%CPU)|  Time          |  Inst      |IN-­‐OUT| -­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐ |      0  |  SELECT  STATEMENT                          |                  |  20000  |        11M|      603      (0)|  00:00:01  |                |            | |      1  |    NESTED  LOOPS                                |                  |              |              |                        |                    |                |            | |      2  |      NESTED  LOOPS                              |                  |  20000  |        11M|      603      (0)|  00:00:01  |                |            | |      3  |        NESTED  LOOPS                            |                  |      200  |  15600  |          3      (0)|  00:00:01  |                |            | |      4  |          NESTED  LOOPS                          |                  |      200  |  13000  |          3      (0)|  00:00:01  |                |            | |      5  |            REMOTE                                    |  TAB3        |      200  |    7800  |          3      (0)|  00:00:01  |  PDBOR~  |  R-­‐>S  | |      6  |            REMOTE                                    |  TAB2        |          1  |        26  |          0      (0)|  00:00:01  |  PDBOR~  |  R-­‐>S  | |      7  |          REMOTE                                      |  TAB1        |          1  |        13  |          0      (0)|  00:00:01  |  PDBOR~  |  R-­‐>S  | |*    8  |        INDEX  RANGE  SCAN                    |  PK_TAB4  |          1  |              |          2      (0)|  00:00:01  |                |            | |      9  |      TABLE  ACCESS  BY  INDEX  ROWID|  TAB4        |      100  |  51400  |          3      (0)|  00:00:01  |                |            | -­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐ Predicate  Information  (identified  by  operation  id): -­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐ 3つのリモートクエリーをDB Linkを介して ネットワーク越しにNested Loop結合を行っ      8  -­‐  access("TAB3"."UNIQUE#"="TAB4"."UNIQUE#"  AND  "TAB3"."BRANCH#"="TAB4"."BRANCH#"  AND ている。                            "TAB3"."LOC#"="TAB4"."LOC#")              filter("TAB4"."UNIQUE#"=1  OR  "TAB4"."UNIQUE#"=2) この部分をすべてリモートデータベース内で 完結させれば、多少の効率改善になるのでは ないか.... 13年11月16日土曜日
  • 35.
    治療方針 3つのリモートクエリーを インラインビューにまとめ ることで、1つのリモート クエリーとして効率化を狙 う SELECT        /*+  USE_NL(t01  tab4)  */        tab4.* FROM        (                SELECT                        /*+  NO_MERGE  */                        tab3.unique#                        ,tab3.branch#                        ,tab3.loc#                FROM                        tab1                        INNER  JOIN  tab2                        ON                                tab1.unique#  =  tab2.unique#  AND  tab1.unique#  IN  (1,2)                        INNER  JOIN  tab3                        ON                                tab2.unique#  =  tab3.unique#  AND  tab2.branch#  =  tab3.branch#        )  t01        INNER  JOIN  tab4        ON                t01.unique#  =  tab4.unique#  AND  t01.branch#  =  tab4.branch#        AND  t01.loc#        =  tab4.loc# ; 13年11月16日土曜日
  • 36.
  • 37.
    治療後の実行計画(ローカル) -­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐ |  Id    |  Operation                                        |  Name        |  Rows    |  Bytes  |  Cost  (%CPU)|  Time          |  Inst      |IN-­‐OUT| -­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐ |      0  |  SELECT  STATEMENT                          |                  |  20000  |        10M|    2004      (1)|  00:00:01  |                |            | |      1  |    NESTED  LOOPS                                |                  |              |              |                        |                    |                |            | |      2  |      NESTED  LOOPS                              |                  |  20000  |        10M|    2004      (1)|  00:00:01  |                |            | |      3  |        VIEW                                            |                  |      200  |    7800  |          3      (0)|  00:00:01  |                |            | |      4  |          REMOTE                                      |                  |              |              |                        |                    |  PDBOR~  |  R-­‐>S  | |*    5  |        INDEX  RANGE  SCAN                    |  PK_TAB4  |      100  |              |          2      (0)|  00:00:01  |                |            | |      6  |      TABLE  ACCESS  BY  INDEX  ROWID|  TAB4        |      100  |  51400  |        10      (0)|  00:00:01  |                |            | -­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐ Predicate  Information  (identified  by  operation  id): -­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐      5  -­‐  access("T01"."UNIQUE#"="TAB4"."UNIQUE#"  AND  "T01"."BRANCH#"="TAB4"."BRANCH#"  AND                            "T01"."LOC#"="TAB4"."LOC#") Remote  SQL  Information  (identified  by  operation  id): -­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐      4  -­‐  EXPLAIN  PLAN  SET  STATEMENT_ID='PLUS8440309'  INTO  PLAN_TABLE@!  FOR  SELECT  /*+  NO_MERGE  */              "A1"."UNIQUE#","A1"."BRANCH#","A1"."LOC#"  FROM  "TAB1"  "A3","TAB2"  "A2","TAB3"  "A1"  WHERE              "A2"."UNIQUE#"="A1"."UNIQUE#"  AND  "A2"."BRANCH#"="A1"."BRANCH#"  AND              "A3"."UNIQUE#"="A2"."UNIQUE#"  AND  ("A3"."UNIQUE#"=1  OR  "A3"."UNIQUE#"=2)  AND  ("A2"."UNIQUE#"=1              OR  "A2"."UNIQUE#"=2)  AND  ("A1"."UNIQUE#"=1  OR  "A1"."UNIQUE#"=2)  (accessing  'PDBORCL_R'  ) 13年11月16日土曜日
  • 38.
    治療後の実行計画(リモート) -­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐ |  Id    |  Operation                      |  Name        |  Rows    |  Bytes  |  Cost  (%CPU)|  Time          | -­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐ |      0  |  SELECT  STATEMENT        |                  |        20  |      420  |          3      (0)|  00:00:01  | |      1  |    NESTED  LOOPS              |                  |        20  |      420  |          3      (0)|  00:00:01  | |      2  |      NESTED  LOOPS            |                  |        20  |      340  |          3      (0)|  00:00:01  | |      3  |        INLIST  ITERATOR    |                  |              |              |                        |                    | |*    4  |          INDEX  RANGE  SCAN|  PK_TAB3  |      200  |    2000  |          3      (0)|  00:00:01  | |*    5  |        INDEX  UNIQUE  SCAN|  PK_TAB2  |          1  |          7  |          0      (0)|  00:00:01  | |*    6  |      INDEX  UNIQUE  SCAN  |  PK_TAB1  |          1  |          4  |          0      (0)|  00:00:01  | -­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐ Predicate  Information  (identified  by  operation  id): -­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐      4  -­‐  access("A1"."UNIQUE#"=1  OR  "A1"."UNIQUE#"=2)      5  -­‐  access("A2"."UNIQUE#"="A1"."UNIQUE#"  AND                            "A2"."BRANCH#"="A1"."BRANCH#")              filter("A2"."UNIQUE#"=1  OR  "A2"."UNIQUE#"=2)      6  -­‐  access("A3"."UNIQUE#"="A2"."UNIQUE#")              filter("A3"."UNIQUE#"=1  OR  "A3"."UNIQUE#"=2) 13年11月16日土曜日
  • 39.
  • 40.
  • 41.
  • 42.
    Oracle® Database管理者ガイド 12cリリース1 (12.1) 分散問合せのチューニング http://docs.oracle.com/cd/E49329_01/server. 121/b71301/ds_appdev.htm#i1007640 13年11月16日土曜日
  • 43.
  • 44.
  • 45.
  • 46.
    精密検査(コード) DECLARE        CURSOR  cs_foobar  IS                SELECT                        rowid                FROM                        foobar                WHERE                        unique#  BETWEEN  1  AND  400000                ORDER  BY                        unique#                FOR  UPDATE; BEGIN        FOR  row  IN  cs_foobar  LOOP              UPDATE  foobar              SET                      foobar_str  =  LPAD('y',500,'y')              WHERE                      rowid  =  row.rowid;        END  LOOP;        COMMIT; END; / 13年11月16日土曜日
  • 47.
    精密検査(コード) DECLARE        CURSOR  cs_foobar  IS                SELECT                        rowid                FROM                        foobar                WHERE                        unique#  BETWEEN  1  AND  400000                ORDER  BY                        unique#                FOR  UPDATE; BEGIN        FOR  row  IN  cs_foobar  LOOP              UPDATE  foobar              SET                      foobar_str  =  LPAD('y',500,'y')              WHERE                      rowid  =  row.rowid;        END  LOOP;        COMMIT; END; / 13年11月16日土曜日
  • 48.
    精密検査(統計情報) USER_INDEXESより TABLE_NAME INDEX_NAME NUM_ROWS DISTINCT_KEYS CLUSTERING_FACTOR -------------- ------------------------- ------------- ----------------FOOBAR SYS_C0010235 2070913 2070913 2070899 USER_IND_COLUMNSより NDEX_NAME COLUMN_NAME ---------------- -------------SYS_C0010235 UNIQUE# USER_TABLESより TABLE_NAME NUM_ROWS AVG_ROW_LEN ------------ ---------- ----------FOOBAR 2000000 506 13年11月16日土曜日
  • 49.
    精密検査(統計情報) USER_INDEXESより TABLE_NAME INDEX_NAME NUM_ROWS DISTINCT_KEYS CLUSTERING_FACTOR -------------- ------------------------- ------------- ----------------FOOBAR SYS_C0010235 2070913 2070913 2070899 USER_IND_COLUMNSより NDEX_NAME COLUMN_NAME ---------------- -------------SYS_C0010235 UNIQUE# クラスタリング ファクタが高い 400,000件更新するので全表走 USER_TABLESより TABLE_NAME NUM_ROWS AVG_ROW_LEN ------------ ---------- ----------FOOBAR 2000000 506 13年11月16日土曜日 査1回のほうが効率的だが..大 人の事情でできない。
  • 50.
  • 51.
  • 52.
    精密検査(続き) Block Size =8192bytes → 4096blocks(Buffer Cache) AVG_ROW_LEN = 506bytes、 PCTFREE=10% → 1ブロックあたり14行程度(大雑把に計算すると) 200万行中、40万件更新 → 28,572blocks(程度は更新) 対象データブロックをすべてをバッファキャッシュに乗せるこ とはできない。 脳内シュミレーション中.... 13年11月16日土曜日
  • 53.
    治療法を考える DECLARE        CURSOR  cs_foobar  IS                SELECT                        rowid                FROM                        foobar                WHERE                        unique#  BETWEEM  1  AND  400000                ORDER  BY                        unique#                FOR  UPDATE; BEGIN        FOR  row  IN  cs_foobar  LOOP                UPDATE  foobar                SET                        foobar_str  =  LPAD('y',500,'y')                WHERE                        rowid  =  row.rowid;        END  LOOP;        COMMIT; END; / 脳内シュミレーション中.... 13年11月16日土曜日
  • 54.
    治療法を考える 主キーのク DECLARE ラスタリングファクタ        CURSOR  cs_foobar  IS                SELECT                        rowid の高さとバッファキャッ                FROM                        foobar                WHERE スの少なさに                        unique#  BETWEEM  1  AND  400000                ORDER  BY                        unique# 着目!                FOR  UPDATE; BEGIN        FOR  row  IN  cs_foobar  LOOP                UPDATE  foobar                SET                        foobar_str  =  LPAD('y',500,'y')                WHERE                        rowid  =  row.rowid;        END  LOOP;        COMMIT; END; / 脳内シュミレーション中.... 13年11月16日土曜日
  • 55.
  • 56.
  • 57.
  • 58.
  • 59.
  • 60.
  • 61.
  • 62.
  • 63.
  • 64.
    処方箋 DECLARE        CURSOR  cs_foobar  IS                SELECT                        rowid                FROM                        foobar                WHERE                        unique#  BETWEEN  1  AND  400000                ORDER  BY                        DBMS_ROWID.ROWID_BLOCK_NUMBER(rowid)                FOR  UPDATE; BEGIN        FOR  row  IN  cs_foobar  LOOP                UPDATE  foobar                SET                        foobar_str  =  LPAD('y',500,'y')                WHERE                        rowid  =  row.rowid;        END  LOOP;        COMMIT; END; / 13年11月16日土曜日
  • 65.
  • 66.
    v$sysstatより STATISTICS NAME BEFORE AFTER Diff dirty buffersinspected 785,126 298,823 -486,303 free buffer inspected 847,091 308,384 -538,707 free buffer requested 839,961 307,981 -531,980 physical read IO requests 791,470 273,368 -518,102 physical read total IO requests 794,522 274,376 -520,146 0 0 0 physical reads 802,309 273,605 -528,704 physical reads cache 802,140 273,410 -528,730 physical write IO requests 774,818 246,934 -527,884 physical write total IO requests 779,397 248,918 -530,479 physical writes 825,809 306,644 -519,165 physical writes from cache 825,631 306,479 -519,152 physical writes non checkpoint 818,900 303,921 -514,979 physical read total multi block requests 13年11月16日土曜日
  • 67.
    v$sysstatより STATISTICS NAME BEFORE AFTER Diff dirty buffersinspected 785,126 298,823 -486,303 free buffer inspected 847,091 308,384 -538,707 free buffer requested 839,961 307,981 -531,980 physical read IO requests 791,470 273,368 -518,102 physical read total IO requests 794,522 274,376 -520,146 0 0 0 physical reads 802,309 273,605 -528,704 physical reads cache 802,140 273,410 -528,730 physical write IO requests 774,818 246,934 -527,884 physical write total IO requests 779,397 248,918 -530,479 physical writes 825,809 306,644 -519,165 physical writes from cache 825,631 306,479 -519,152 physical writes non checkpoint 818,900 303,921 -514,979 physical read total multi block requests 13年11月16日土曜日
  • 68.
    グラフ 10 治療効果の確認 900,000 675,000 225,000 0 free bufferrequested physical reads cache physical writes from cache BEFORE 13年11月16日土曜日 AFTER Blocks 450,000
  • 69.
  • 70.
  • 71.
  • 72.
  • 73.
    仕様書で見るERDは... Oracle SQL DeveloperData Modeler 4.0.0 13年11月16日土曜日
  • 74.
  • 75.
  • 76.
  • 77.
  • 78.
  • 79.
  • 80.
  • 81.
  • 82.
  • 83.
  • 84.
  • 85.
  • 86.
  • 87.
  • 88.
  • 89.
  • 90.
  • 91.
  • 92.
  • 93.
  • 94.
    このようなクエリーを書く事に.... SELECT        orderitems.order#,COUNT(1) FROM        orderitems        INNER  JOIN  items        ON                orderitems.item#  =  items.item#        INNER  JOIN  orders        ON                orderitems.order#  =  orders.order#        INNER  JOIN  customers        ON                orders.customer#  =  customers.customer# GROUP  BY        orderitems.order# ; 13年11月16日土曜日
  • 95.
  • 96.
  • 97.
  • 98.
  • 99.
  • 100.
    SELECT orderitems.order#,COUNT(1) FROM orderitems INNER JOIN items ON orderitems.item#= items.item# INNER JOIN orders ON orderitems.order# = orders.order# INNER JOIN customers ON orders.customer# = customers.customer# GROUP BY orderitems.order# ; 13年11月16日土曜日
  • 101.
    SELECT orderitems.order#,COUNT(1) FROM orderitems INNER JOIN items ON orderitems.item#= items.item# INNER JOIN orders ON orderitems.order# = orders.order# INNER JOIN customers ON orders.customer# = customers.customer# GROUP BY orderitems.order# 参照整合性制約の有無で実行計画がどう変 ; 化するか見てみます! 13年11月16日土曜日
  • 102.
  • 103.
    参照整合性制約なし 実行計画 -­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐ Plan  hash  value:  411877633 -­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐ |  Id    |  Operation                            |  Name                    |  Rows    |  Bytes  |TempSpc|  Cost  (%CPU)|  Time          | -­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐ |      0  |  SELECT  STATEMENT              |                              |  50000  |    1464K|              |    1325      (3)|  00:00:16  | |      1  |    SORT  GROUP  BY  NOSORT    |                              |  50000  |    1464K|              |    1325      (3)|  00:00:16  | |      2  |      NESTED  LOOPS                  |                              |      246K|    7212K|              |    1325      (3)|  00:00:16  | |      3  |        NESTED  LOOPS                |                              |      246K|    6010K|              |    1313      (2)|  00:00:16  | |      4  |          MERGE  JOIN                  |                              |      247K|    4831K|              |    1301      (1)|  00:00:16  | |      5  |            INDEX  FULL  SCAN      |  PK_ORDERITEMS  |      250K|    2441K|              |    1029      (1)|  00:00:13  | |*    6  |            SORT  JOIN                  |                              |  50000  |      488K|    1976K|      271      (1)|  00:00:04  | |      7  |              TABLE  ACCESS  FULL|  ORDERS                |  50000  |      488K|              |        68      (0)|  00:00:01  | |*    8  |          INDEX  UNIQUE  SCAN    |  PK_ITEMS            |          1  |          5  |              |          0      (0)|  00:00:01  | |*    9  |        INDEX  UNIQUE  SCAN      |  PK_CUSTOMERS    |          1  |          5  |              |          0      (0)|  00:00:01  | -­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐ Predicate  Information  (identified  by  operation  id): -­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐      6  -­‐  access("ORDERITEMS"."ORDER#"="ORDERS"."ORDER#")              filter("ORDERITEMS"."ORDER#"="ORDERS"."ORDER#")      8  -­‐  access("ORDERITEMS"."ITEM#"="ITEMS"."ITEM#")      9  -­‐  access("ORDERS"."CUSTOMER#"="CUSTOMERS"."CUSTOMER#") 統計 -­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐                    0    recursive  calls                    0    db  block  gets          262017    consistent  gets                244    physical  reads                    0    redo  size        1126677    bytes  sent  via  SQL*Net  to  client            37207    bytes  received  via  SQL*Net  from  client              3335    SQL*Net  roundtrips  to/from  client                    1    sorts  (memory)                    0    sorts  (disk)            50000    rows  processed 13年11月16日土曜日
  • 104.
    参照整合性制約なし 実行計画 -­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐ Plan  hash  value:  411877633 -­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐ |  Id    |  Operation                            |  Name                    |  Rows    |  Bytes  |TempSpc|  Cost  (%CPU)|  Time          | -­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐ |      0  |  SELECT  STATEMENT              |                              |  50000  |    1464K|              |    1325      (3)|  00:00:16  | |      1  |    SORT  GROUP  BY  NOSORT    |                              |  50000  |    1464K|              |    1325      (3)|  00:00:16  | |      2  |      NESTED  LOOPS                  |                              |      246K|    7212K|              |    1325      (3)|  00:00:16  | |      3  |        NESTED  LOOPS                |                              |      246K|    6010K|              |    1313      (2)|  00:00:16  | |      4  |          MERGE  JOIN                  |                              |      247K|    4831K|              |    1301      (1)|  00:00:16  | |      5  |            INDEX  FULL  SCAN      |  PK_ORDERITEMS  |      250K|    2441K|              |    1029      (1)|  00:00:13  | |*    6  |            SORT  JOIN                  |                              |  50000  |      488K|    1976K|      271      (1)|  00:00:04  | |      7  |              TABLE  ACCESS  FULL|  ORDERS                |  50000  |      488K|              |        68      (0)|  00:00:01  | |*    8  |          INDEX  UNIQUE  SCAN    |  PK_ITEMS            |          1  |          5  |              |          0      (0)|  00:00:01  | |*    9  |        INDEX  UNIQUE  SCAN      |  PK_CUSTOMERS    |          1  |          5  |              |          0      (0)|  00:00:01  | -­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐ Predicate  Information  (identified  by  operation  id): -­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐      6  -­‐  access("ORDERITEMS"."ORDER#"="ORDERS"."ORDER#")              filter("ORDERITEMS"."ORDER#"="ORDERS"."ORDER#")      8  -­‐  access("ORDERITEMS"."ITEM#"="ITEMS"."ITEM#")      9  -­‐  access("ORDERS"."CUSTOMER#"="CUSTOMERS"."CUSTOMER#") 統計 -­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐                    0    recursive  calls                    0    db  block  gets          262017    consistent  gets                244    physical  reads                    0    redo  size        1126677    bytes  sent  via  SQL*Net  to  client            37207    bytes  received  via  SQL*Net  from  client              3335    SQL*Net  roundtrips  to/from  client                    1    sorts  (memory)                    0    sorts  (disk)            50000    rows  processed 13年11月16日土曜日
  • 105.
    参照整合性制約なし 実行計画 -­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐ Plan  hash  value:  411877633 -­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐ |  Id    |  Operation                            |  Name                    |  Rows    |  Bytes  |TempSpc|  Cost  (%CPU)|  Time          | -­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐ |      0  |  SELECT  STATEMENT              |                              |  50000  |    1464K|              |    1325      (3)|  00:00:16  | |      1  |    SORT  GROUP  BY  NOSORT    |                              |  50000  |    1464K|              |    1325      (3)|  00:00:16  | |      2  |      NESTED  LOOPS                  |                              |      246K|    7212K|              |    1325      (3)|  00:00:16  | |      3  |        NESTED  LOOPS                |                              |      246K|    6010K|              |    1313      (2)|  00:00:16  | |      4  |          MERGE  JOIN                  |                              |      247K|    4831K|              |    1301      (1)|  00:00:16  | |      5  |            INDEX  FULL  SCAN      |  PK_ORDERITEMS  |      250K|    2441K|              |    1029      (1)|  00:00:13  | |*    6  |            SORT  JOIN                  |                              |  50000  |      488K|    1976K|      271      (1)|  00:00:04  | |      7  |              TABLE  ACCESS  FULL|  ORDERS                |  50000  |      488K|              |        68      (0)|  00:00:01  | |*    8  |          INDEX  UNIQUE  SCAN    |  PK_ITEMS            |          1  |          5  |              |          0      (0)|  00:00:01  | |*    9  |        INDEX  UNIQUE  SCAN      |  PK_CUSTOMERS    |          1  |          5  |              |          0      (0)|  00:00:01  | -­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐ Predicate  Information  (identified  by  operation  id): -­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐      6  -­‐  access("ORDERITEMS"."ORDER#"="ORDERS"."ORDER#")              filter("ORDERITEMS"."ORDER#"="ORDERS"."ORDER#")      8  -­‐  access("ORDERITEMS"."ITEM#"="ITEMS"."ITEM#")      9  -­‐  access("ORDERS"."CUSTOMER#"="CUSTOMERS"."CUSTOMER#") 統計 -­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐                    0    recursive  calls                    0    db  block  gets          262017    consistent  gets                244    physical  reads                    0    redo  size        1126677    bytes  sent  via  SQL*Net  to  client            37207    bytes  received  via  SQL*Net  from  client              3335    SQL*Net  roundtrips  to/from  client                    1    sorts  (memory)                    0    sorts  (disk)            50000    rows  processed 13年11月16日土曜日
  • 106.
    参照整合性制約あり オプティマイザーは賢い :) 実行計画 -­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐ Plan  hash  value:  3325112419 -­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐ |  Id    |  Operation                          |  Name                        |  Rows    |  Bytes  |TempSpc|  Cost  (%CPU)|  Time          | -­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐ |      0  |  SELECT  STATEMENT            |                                  |  50536  |      246K|              |      516      (2)|  00:00:07  | |      1  |    HASH  GROUP  BY                |                                  |  50536  |      246K|    2952K|      516      (2)|  00:00:07  | |      2  |      INDEX  FAST  FULL  SCAN|  IX01_ORDERITEMS  |      250K|    1220K|              |      145      (1)|  00:00:02  | -­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐ 統計 -­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐                    0    recursive  calls                    0    db  block  gets                589    consistent  gets                    0    physical  reads                    0    redo  size        1126677    bytes  sent  via  SQL*Net  to  client            37207    bytes  received  via  SQL*Net  from  client              3335    SQL*Net  roundtrips  to/from  client                    0    sorts  (memory)                    0    sorts  (disk)            50000    rows  processed 13年11月16日土曜日
  • 107.
    参照整合性制約あり オプティマイザーは賢い :) 実行計画 -­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐ Plan  hash  value:  3325112419 -­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐ |  Id    |  Operation                          |  Name                        |  Rows    |  Bytes  |TempSpc|  Cost  (%CPU)|  Time          | -­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐ |      0  |  SELECT  STATEMENT            |                                  |  50536  |      246K|              |      516      (2)|  00:00:07  | |      1  |    HASH  GROUP  BY                |                                  |  50536  |      246K|    2952K|      516      (2)|  00:00:07  | |      2  |      INDEX  FAST  FULL  SCAN|  IX01_ORDERITEMS  |      250K|    1220K|              |      145      (1)|  00:00:02  | -­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐ 統計 -­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐                    0    recursive  calls                    0    db  block  gets                589    consistent  gets                    0    physical  reads                    0    redo  size        1126677    bytes  sent  via  SQL*Net  to  client            37207    bytes  received  via  SQL*Net  from  client              3335    SQL*Net  roundtrips  to/from  client                    0    sorts  (memory)                    0    sorts  (disk)            50000    rows  processed 13年11月16日土曜日
  • 108.
    参照整合性制約あり オプティマイザーは賢い :) 実行計画 -­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐ Plan  hash  value:  3325112419 -­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐ |  Id    |  Operation                          |  Name                        |  Rows    |  Bytes  |TempSpc|  Cost  (%CPU)|  Time          | -­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐ |      0  |  SELECT  STATEMENT            |                                  |  50536  |      246K|              |      516      (2)|  00:00:07  | |      1  |    HASH  GROUP  BY                |                                  |  50536  |      246K|    2952K|      516      (2)|  00:00:07  | |      2  |      INDEX  FAST  FULL  SCAN|  IX01_ORDERITEMS  |      250K|    1220K|              |      145      (1)|  00:00:02  | -­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐ 統計 -­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐                    0    recursive  calls                    0    db  block  gets                589    consistent  gets                    0    physical  reads                    0    redo  size        1126677    bytes  sent  via  SQL*Net  to  client            37207    bytes  received  via  SQL*Net  from  client              3335    SQL*Net  roundtrips  to/from  client                    0    sorts  (memory)                    0    sorts  (disk)            50000    rows  processed 13年11月16日土曜日
  • 109.
  • 110.
  • 111.
    Oracle®  Databaseデータ・ウェアハウス・ガイド 11gリリース2(11.2)  / 整合性制約 http://docs.oracle.com/cd/E16338_01/server.112/ b56309/constra.htm#i1006284 13年11月16日土曜日
  • 112.
  • 113.
  • 114.
  • 115.
    最後に 2007年2月14日、 Insight World 2007というイベントがありました。 そのキーノートでアンニョ・コークさんがおっしゃっていたことを今でも思い出します。 アンニョ・コーク /  "Oracle  Performance  Management:  Past,  Present  and  Future" “Oracle10gがリリースされ初期化パラメータが少なくなり、Oracle⾃自⾝身が各パラメータを  調整するようになった今、DBAに求められる役割は、Oracleの細かなチュ­−ニングよりも  アプリケーション側の問題を指摘したりすることにシフトしてきている。  ....  パフォーマンス劣劣化問題の原因の多くは、データベース側というよりも  アプリケーション側にあることが多くなっている.” 13年11月16日土曜日
  • 116.
    最後に 2007年2月14日、 Insight World 2007というイベントがありました。 そのキーノートでアンニョ・コークさんがおっしゃっていたことを今でも思い出します。 アンニョ・コーク /  "Oracle  Performance  Management:  Past,  Present  and  Future" “Oracle10gがリリースされ初期化パラメータが少なくなり、Oracle⾃自⾝身が各パラメータを  調整するようになった今、DBAに求められる役割は、Oracleの細かなチュ­−ニングよりも  アプリケーション側の問題を指摘したりすることにシフトしてきている。  ....  パフォーマンス劣劣化問題の原因の多くは、データベース側というよりも  アプリケーション側にあることが多くなっている.” 13年11月16日土曜日
  • 117.