12cã§ã¯ãããæé©ãªå®è¡è¨ç»ãé¸ã°ãããããªã
ãããã¾ã§ã®ãªãªã¼ã¹ã§ããã¼ã¸ã§ã³ã¢ãããã度ã«æ§ã ãªæ°æ©è½ã追å ããã¦ãããªããã£ãã¤ã¶ã§ãããOracle Database 12cï¼ä»¥ä¸ã12cï¼ã§ã¯ããæé©ãªå®è¡è¨ç»ãé¸æãããããã«ãé©å¿ååãã®æé©åãããSQLè¨ç»ç®¡çï¼SQL Plan Managementï¼ããããã«ã¯ãã¼ãã®ãªã³ã©ã¤ã³çµ±è¨åéããªã©ã®æ°æ©è½ã追å ããã¦ãã¾ããä»åã¯12cã«ãã¼ã¸ã§ã³ã¢ããããéã®å¤§ããªå¤æ´ç¹ã¨ãªãããé©å¿ååãã®æé©åãã«ã¤ãã¦ç´¹ä»ãã¾ãã
ããé©å¿ååãã®æé©åãã¨ã¯ãããåªããå®è¡è¨ç»ã«ãªãããã®è¿½å æ å ±ãæ¤åºããæ©è½ã®ç·ç§°ã§ããå½¹å²ã«å¿ãã¦ä»¥ä¸ã®ããã«ç´°ããåé¡ããã¦ãã¾ãããããããããè¨ãã°ãä»ã¾ã§æé©ãªå®è¡è¨ç»ãé¸ã°ããªãã£ãSQLã§ãã12cã«ããã¨ããè¯ãå®è¡è¨ç»ãé¸ã°ãããããªããã¨ããæ©è½ã§ãã

çµ±è¨æ å ±ã¨ç¾å®ã®ã®ã£ãããåãããé©å¿è¨ç»
ãOracle Databaseã§ã¯ãSQLãå®è¡ããã¨ãã¼ã¿ã»ãã£ã¯ã·ã§ããªã«æ ¼ç´ããã¦ãããªããã£ãã¤ã¶çµ±è¨ããã¨ã«æãå¹ççãªå®è¡è¨ç»ãé¸æããå®è¡ãã§ã¼ãºã«ç§»ãã¾ãããã®æãã¼ã¿ã»ãã£ã¯ã·ã§ããªã«æ ¼ç´ããçµ±è¨ãä¸æ£ç¢ºã§ãã£ãããè¤éãªæ¼ç®åãæ¡ä»¶è¿°èªãåå¨ããç¶æ³ã§ã¯ãéå¹çãªå®è¡è¨ç»ãé¸æããããã¨ãããã¾ãã
ãOracle Databaseã§ã¯SQLã®è§£æè² è·ã軽æ¸ããããã«ãäºåã«åéããçµ±è¨ããã¨ã«å®è¡è¨ç»ãç«ã¦ãåä½ã«ãªã£ã¦ãã¾ãããããã¾ã§çµ±è¨åå¾æç¹ã®æ å ±ã§ãããããç¾å®ã¨ã®ã®ã£ãããçãã¦ãã¾ããã¨ãå°ãªãããã¾ããããã®ããã管çè ãé©åãªåå¾ã¿ã¤ãã³ã°ãé »åº¦ãã¬ãã«ã§çµ±è¨æ å ±ãåéããã¨ãã£ãä½æ¥ãæ±ãããã¾ãã
ã12cããæ°ããå®è£ ãããé©å¿è¨ç»ã§ã¯ãSQLå®è¡ä¸ã«æ¤ç´¢å¯¾è±¡ã¨ãªãè¡æ°ãªã©ã®è¿½å æ å ±ãåéããè¦ç©ã£ãçµæã¨å¤§ããç°ãªãå ´åã追å æ å ±ããã¨ã«æçµçãªå®è¡è¨ç»ãé¸æãã¦ãããããã«ãªãã¾ããã
é©å¿è¨ç»ã®åºæ¬åä½
ã1. ãªããã£ãã¤ã¶çµ±è¨ããã¨ã«ããã©ã«ãã»ãã©ã³ãä½æ
ã2. SQLå®è¡ä¸ã«çµ±è¨ã³ã¬ã¯ã¿ã追å ã®æ
å ±ãåéããé¾å¤ãä¸åããå¦ãããã§ãã¯
ã3. åéããæ
å ±ã«ãã£ã¦æé©ãªãµãã»ãã©ã³ãé¸æããæçµãã©ã³ã決å®

ãç°¡åãªSQLã§é©å¿è¨ç»ã®åä½ã確èªãã¦ã¿ã¾ããããä»åã¯LOG表ï¼é¡§å®¢ã®ãã°æ
å ± 200ä¸è¡ï¼ã¨CUST表ï¼é¡§å®¢æ
å ± 8ä¸è¡ï¼ã®2ã¤ãçµåããCUST表ããä¼ç¤¾çªå·ã42299ã®æ
å ±ã ããæ¤ç´¢ãã¾ãã
ãµã³ãã«SQL
SELECT log.custno,logno,tel1
FROM log,cust
WHERE log.custno = cust.custno
AND cust.compno = 42299;
ãã¾ãããªããã£ãã¤ã¶çµ±è¨ããã¨ã«è¦ç©ã£ãããã©ã«ãã»ãã©ã³ã確èªãã¦ã¿ã¾ããRowsåãè¦ãã¨CUST表ã§è©²å½ãããã¼ã¿ã¯19è¡ãLOG表ã§è©²å½ããã®ã¯131è¡ãçµåããçµæã¯2497è¡ã¨å°éã®ãã¼ã¿ãçµåãããããç´¢å¼ã使ã£ããã¹ãããã»ã«ã¼ãçµåãæé©ã ã¨è¦ç©ã£ã¦ãã¾ããããã§ãã¤ã³ãã¨ãªãã®ã¯ããã®çµæã¯ããã¾ã§ãªããã£ãã¤ã¶çµ±è¨ããã¨ã«ãã¦è¦ç©ã£ãè¨ç»ã§ãããç¾å¨ã®è¡¨ã®ç¶æ³ããã¨ã«ããè¨ç»ã§ã¯ãªãã¨ããç¹ã§ãã

ã次ã«ãå®è¡æã«å®éã«é¸æãããæçµãã©ã³ã確èªãã¦ã¿ã¾ããã¾ã注ç®ãã¹ãã¯Id4ã®STATISTICS COLLECTORï¼çµ±è¨ã³ã¬ã¯ã¿ï¼ã§ããCUST表ã¸ã®å ¨è¡¨ã¹ãã£ã³ã§å¾ãããå®è¡æ°ãªã©ããè¨ç»ã®ä¸é¨ã¨ãã¦æ¿å ¥ãã¦ãã¾ããæ¬ä¾ã®ããã«E-Rowsï¼è¦ç©ããã®è¡æ°ï¼ã¨A-Rowsï¼å®éã®è¡æ°ï¼ã大ããä¹é¢ãã¦ãããããªç¶æ³ã§ã¯ãçµ±è¨ã³ã¬ã¯ã¿ãå¹æãçºæ®ãã¾ããçµ±è¨ã³ã¬ã¯ã¿ã«ãã追å æ å ±ã®æ¿å ¥ã«ãã£ã¦ãå½åãã¹ãããã»ã«ã¼ãçµåãæé©ã ã¨è¦ç©ã£ã¦ããè¨ç»ãå¤æ´ããæçµçã«ã¯ããã·ã¥çµåã«åãæ¿ãã¦å®è¡ãã¦ãã¾ãã
ãIdã«ãã¤ãã³ï¼-ï¼ãä»å ããããã®ã¯å®éã«ã¯ä½¿ç¨ãããªãã£ããµãã»ãã©ã³ã表ãã¦ããããã¹ãããã»ã«ã¼ãçµåããããã·ã¥çµåã¸ã¨å¤æ´ãããã®ãå¤å¥ã§ããããã«ãªã£ã¦ãã¾ãã

ããã®ããã«ãé©å¿è¨ç»ã¯ãªããã£ãã¤ã¶ãè¦ç©ã£ãæ å ±ã¨å®éã®æ å ±ãä¹é¢ãã¦ããå ´åã«å¹æãçºæ®ãã¾ããOracle Database 11g以åã§ã¯æé©ãªå®è¡è¨ç»ãé¸æãããªãã£ãç¶æ³ã§ãã12cã§ã¯ããè¯ãå®è¡è¨ç»ãæ¤åºããSQLå®è¡æã®ããã©ã¼ãã³ã¹ä½ä¸ãåé¿ãããã¨ãã§ãã¾ãã
ããã ããé©å¿è¨ç»ã§ã¯çµåæ¹æ³ã®æé©åããã©ã¬ã«å®è¡æã®åæ£æ¹æ³ãæé©åã§ãããã®ã®ãæ¢ã«é¸æãã表ã®è¿½å æ å ±ãåéããå¾ã«æ¬¡ã®ãµãã»ãã©ã³ãæ¤è¨ãããããçµåé åºããã©ã¬ã«åº¦ã®æé©åã¯ã§ãã¾ããããã®ãããªå ´åã«ã¯ã次ã«ãç´¹ä»ããèªååæé©åãå¹æçã§ãã