Oracle/¼Â¹Ô·×²è

¼Â¹Ô·×²è¤Î¸«Êý

------------------------------------------------------
| Id  | Operation                        | Name      |¡¡¼Â¹Ô½ç½ø
------------------------------------------------------¡¡
|   0 | SELECT STATEMENT                 |           |¡¡8¡¡SELECTʸ¤Î·ë²Ì¤È¤·¤Æ½ÐÎÏ
|   1 |   MERGE JOIN CARTESIAN           |           |¡¡7¡¡5 6¤ÇºîÀ®¤·¤¿É½¤òCROSS·ë¹ç
|   2 |     NESTED LOOPS                 |           |¡¡5¡¡2 3¤ÇºîÀ®¤·¤¿É½¤ò NESTED LOOPS¤Ç·ë¹ç
|   3 |       TABLE ACCESS BY INDEX ROWID| DEPT      |¡¡2¡¡1 ¤Ç¹Ê¤ê¹þ¤ó¤À DEPTɽ ¤Î¹Ô¤ò¼èÆÀ¤¹¤ë
|*  4 |         INDEX UNIQUE SCAN        | PK_DEPT   |¡¡1¡¡PK_DEPTº÷°ú ¤Ç¹Ê¤ê¹þ¤à
|*  5 |       TABLE ACCESS FULL          | EMPLOYEES |¡¡3¡¡EMPLOYEESɽ ¤ò FULL¥¹¥­¥ã¥ó
|   6 |     BUFFER SORT                  |           |¡¡6¡¡4 ¤Ç¼èÆÀ¤·¤¿¥Æ¡¼¥Ö¥ë¤ò¥½¡¼¥È¡©
|*  7 |       TABLE ACCESS FULL          | EMP       |¡¡4¡¡EMPɽ ¤òFULL¥¹¥­¥ã¥ó
------------------------------------------------------
  • ¥¤¥ó¥Ç¥ó¥È¤¬¿¼¤¤¤â¤Î¤«¤é¼Â¹Ô¤µ¤ì¤ë
  • Ʊ¤¸³¬ÁؤΤâ¤Î¤Ï¾å°Ì¤Ë¤¢¤ë¤â¤Î¤«¤é¼Â¹Ô¤µ¤ì¤ë
  • *¤¬ÉÕÍ¿¤·¤Æ¤ë¤Î¤Ï¥Õ¥£¥ë¥¿

     

¼Â¹Ô·×²è¤Î¼èÆÀ

ľÁ°¤Ë¼Â¹Ô¤µ¤ì¤¿SQLʸ¤Î¼Â¹Ô·×²è¼èÆÀ

set serveroutput off
set line 10000 pages 0

-- ¼ÂºÝ¤Î¹Ô¿ô¤ä»þ´Ö¹àÌܤò½ÐÎϤ¹¤ë¤è¤¦¤Ë¤¹¤ë¡ÊV$SQL_PLAN_STATISTICS¥Ó¥å¡¼¤ËÅý·×¾ðÊó¤ò½ÐÎÏ¡Ë
alter session set statistics_level=all;

-- ¼Â¹Ô·×²è¤ò¼èÆÀ¤·¤¿¤¤SQL¤ò¼Â»Ü
select 1 from dual;

-- ľÁ°¤Ë¼Â»Ü¤µ¤ì¤¿¼Â¹Ô·×²è¤Î¾ðÊó¤ò½ÐÎÏ
SELECT * FROM TABLE(DBMS_XPLAN.DISPLAY_CURSOR(format=>'ALL ALLSTATS LAST'));
format»ØÄêÀâÌÀ
IOSTATSI/O¤Ë´Ø¤¹¤ë¼Â¹ÔÅý·×¤òɽ¼¨
MEMSTATS¥á¥â¥ê¤Ë´Ø¤¹¤ë¼Â¹ÔÅý·×¤òɽ¼¨
ALLSTATSIOSTATS¤ÈMEMSTATS¤ÎξÊý¤ò»ØÄê
LASTºÇ¸å¤Ë¼Â¹Ô¤·¤¿SQL¤òɽ¼¨¡£»ØÄꤷ¤Ê¤¤¾ì¹ç¤ÏƱ°ìSQLʸ¤ÎÁ´¼Â¹Ô¤ò½¸·×ɽ¼¨


¥«¡¼¥½¥ë¥­¥ã¥Ã¥·¥å¤«¤é¼Â¹Ô·×²è¤ò¼èÆÀ

-- v$sql ¤Ê¤É¤«¤é sqlid ¤È child_number ¤ò¼èÆÀ¤·¤Æ¼Â¹Ô¡Êchild_number¾Êά¤¹¤ë¤È 0 ¤Ë¤Ê¤ë¡Ë
SELECT * FROM table(DBMS_XPLAN.DISPLAY_CURSOR('SQLID', CHILD_NUMBER, 'ALL ALLSTATS LAST'));

-- ¾åµ­SQL¤ò°ì³ç¤ÇºîÀ®¤¹¤ë¾ì¹ç
select distinct 'SELECT * FROM table(DBMS_XPLAN.DISPLAY_CURSOR(''' || sql_id || ''',' || child_number || ',''' || 'ALL ALLSTATS LAST''));' from GV$SQL;
(¼Â¹ÔÎã) 
SQL> SELECT * FROM table(DBMS_XPLAN.DISPLAY_CURSOR('520mkxqpf15q8', 0, 'ALL ALLSTATS LAST'));
SQL_ID  520mkxqpf15q8, child number 0
-------------------------------------
select 1 from dual

Plan hash value: 1388734953
-------------------------------------------------------------------------------------------------
| Id  | Operation        | Name | Starts | E-Rows | Cost (%CPU)| E-Time   | A-Rows |   A-Time   |
-------------------------------------------------------------------------------------------------
|   0 | SELECT STATEMENT |      |      1 |        |     2 (100)|          |      1 |00:00:00.01 |
|   1 |  FAST DUAL       |      |      1 |      1 |     2   (0)| 00:00:01 |      1 |00:00:00.01 |
-------------------------------------------------------------------------------------------------


AWR¤«¤é¤Î¼Â¹Ô·×²è¼èÆÀ

SELECT PLAN_TABLE_OUTPUT FROM table(DBMS_XPLAN.DISPLAY_AWR('SQL_ID',null,null,'ALL ALLSTATS LAST'));

AWR¥¹¥Ê¥Ã¥×¥·¥ç¥Ã¥È¤Ë´Þ¤Þ¤ì¤ëSQLʸ¤«¤é¼Â¹Ô·×²è¤ò¼èÆÀ¤¹¤ë¡£
AWR¤ÎSQL¤Ïtopnsql¤ÎÈÏ°ÏÆâ¤Î¤ß¼èÆÀ¤¹¤ë¡£MODIFY_SNAPSHOT_SETTING¥×¥í¥·¡¼¥¸¥ã¤Ç¡¢topnsql¤ÎÊѹ¹¤¬²Äǽ¡£

EXPLAIN PLANʸ

EXPLAIN PLAN FOR <Ǥ°Õ¤ÎSQLʸ>
SELECT * FROM TABLE(DBMS_XPLAN.DISPLAY);


½ÐÎÏ·ë²Ì

¸«ÀѤâ¤êÀâÌÀ
E-Rows¸«ÀѤâ¤ê·ï¿ô
E-Time¸«ÀѤâ¤ê»þ´Ö
OMemOptimal¤Ç¼Â¹Ô¤¹¤ë¤¿¤á¤ËɬÍפȸ«ÀѤâ¤Ã¤¿¥á¥â¥ê¡¦¥µ¥¤¥º
1Mem1-pass¤Ç¼Â¹Ô¤¹¤ë¤¿¤á¤ËɬÍפȸ«ÀѤâ¤Ã¤¿¥á¥â¥ê¡¦¥µ¥¤¥º
E-Temp°ì»þ»þÎΰè¤Î¸«ÀѤâ¤ê»ÈÍÑÎÌ
¼Â¹ÔÅý·×ÀâÌÀ
Starts¤½¤Î¥¹¥Æ¥Ã¥×¤¬¼Â¹Ô¤µ¤ì¤¿²ó¿ô
A-Rows½èÍý¹Ô¿ô
A-Time¼Â¹Ô»þ´Ö
Buffers¥Ð¥Ã¥Õ¥¡¡¦¥¢¥¯¥»¥¹¿ô
Reads¥Ç¥£¥¹¥¯¤«¤éÆɤ߹þ¤Þ¤ì¤¿¥Ö¥í¥Ã¥¯¿ô
Writes¥Ç¥£¥¹¥¯¤Ë½ñ¤­½Ð¤µ¤ì¤¿¥Ö¥í¥Ã¥¯¿ô
Used-Mem»ÈÍѤ·¤¿¥á¥â¥ê¡¦¥µ¥¤¥º¤È½èÍýÊýË¡(0:Optimal¡¡1:1-pass¡¡>1:Multi-pass)
O/1/MOptimal¡¢1-pass¡¢Multi-pass¤Ç¤½¤ì¤¾¤ì¼Â¹Ô¤µ¤ì¤¿²ó¿ô
Used-Tmp»ÈÍѤ·¤¿°ì»þ¥»¥°¥á¥ó¥È¤Î¥µ¥¤¥º
Max-Tmp»ÈÍѤ·¤¿°ì»þ¥»¥°¥á¥ó¥È¤ÎºÇÂ祵¥¤¥º

¢¨ ¥µ¥¤¥º¤Îñ°Ì¤ÏKbyte¡ÊK¤Îɽ¼¨¤¬¤Ê¤¯¤Æ¤â¡Ë
¢¨ Optimal¤Ï¥á¥â¥êÆâ¤ÇÁ´¤Æ¤Îºî¶È¤ò½ª¤¨¤ë¤³¤È
¡¡ 1-pass¤ÏÃæ´Ö¥Ç¡¼¥¿¤ò°ìÃʳ¬¥Ç¥£¥¹¥¯¤ËÂàÈò¤·¤Æ¥Þ¡¼¥¸
¡¡ Multi-pass¤ÏÃæ´Ö¥Ç¡¼¥¿¤òÆóÃʳ¬°Ê¾å¥Ç¥£¥¹¥¯¤ËÂàÈò¤·¤Æ¥Þ¡¼¥¸

 

AUTOTRACE

¼Â¹Ô·×²è¤ä¡¢¼Â¹ÔÅý·×¤ò¼èÆÀ¤¹¤ë¡£¤¿¤À¤·DDL¤Ï¼èÆÀ¤Ç¤­¤Ê¤¤¡£DDL¤Î¼Â¹Ô·×²è¤ò¼èÆÀ¤¹¤ë¤Ë¤Ï¡¢EXPLAIN PLAN FOR ¤ò»È¤¦¡£
¼Â¹ÔÅý·×¤ò½ÐÎϤ¹¤ë¤Ë¤Ï¡¢PLUSTRACE¥í¡¼¥ë¤¬É¬ÍסÊplustrce.sql¤Î¼Â¹Ô¡Ë

SET AUTOTRACE { OFF | ON | TRACEONLY } [EXPLAIN] [STATISTICS]
¥ª¥×¥·¥ç¥óÀâÌÀ
EXP[LAIN]¼Â¹Ô·×²è¤Î¤ß¥ì¥Ý¡¼¥È½ÐÎϤ¹¤ë
STAT[ISTICS]¼Â¹ÔÅý·×¤Î¤ß¥ì¥Ý¡¼¥È½ÐÎϤ¹¤ë
TRACE[ONLY]¥Ç¡¼¥¿¤ò¥Õ¥§¥Ã¥Á¤¹¤ë¤¬¡¢·ë²Ì¤ò½ÐÎϤ»¤º¤Ë¼Â¹Ô·×²è¡¢¼Â¹ÔÅý·×¤ò¥ì¥Ý¡¼¥È½ÐÎϤ¹¤ë
¼Â¹ÔÅý·×ÀâÌÀ
recursive callsSQL¼Â¹Ô»þ¤ËÆâÉô¤Çȯ¹Ô¤µ¤ì¤¿¥ê¥«¡¼¥·¥Ö¥³¡¼¥ë¿ô
db block getsDMLÅù¤òȯ¹Ô¤·¤¿¤È¤­¤Ê¤É¤ËȯÀ¸¤¹¤ë¥«¥ì¥ó¥È¥â¡¼¥É¤ÇÆɤ߹þ¤Þ¤ì¤¿¥Ö¥í¥Ã¥¯¿ô
consistent getsSELECT¤òȯ¹Ô¤·¤¿¤È¤­¤Ê¤É¤ËȯÀ¸¤¹¤ëÆɤ߼è¤ê°ì´ÓÀ­¥â¡¼¥É¤ÇÆɤ߹þ¤Þ¤ì¤¿¥Ö¥í¥Ã¥¯¿ô
physical reads¥Ç¥£¥¹¥¯¥¢¥¯¥»¥¹¤Ë¤è¤Ã¤ÆÆɤ߹þ¤Þ¤ì¤¿¥Ö¥í¥Ã¥¯¿ô
redo sizeREDO¥í¥°¤Ë½ñ¤­¹þ¤Þ¤ì¤¿¥µ¥¤¥º¡Êbyte¡Ë
bytes sent via SQL*Net to client¥¯¥é¥¤¥¢¥ó¥È¤ØÁ÷¤é¤ì¤¿¹ç·×byte¿ô
bytes received via SQL*Net from client¥¯¥é¥¤¥¢¥ó¥È¤«¤é¼õ¿®¤·¤¿¹ç·×byte¿ô
SQL*Net roundtrips to/from client¥¯¥é¥¤¥¢¥ó¥È¤ËÁ÷¼õ¿®¤µ¤ì¤¿Net¥á¥Ã¥»¡¼¥¸¤Î¹ç·×¿ô
sorts (memory)¥á¥â¥ê¥½¡¼¥È²ó¿ô
sorts (disk)¥Ç¥£¥¹¥¯¥½¡¼¥È²ó¿ô
rows processedSQL¤¬½èÍý¤·¤¿·ï¿ô


 

¥¢¥¯¥»¥¹¥Ñ¥¹

¥¢¥¯¥»¥¹¥Ñ¥¹­¡­¢­£­¤­¥ÀâÌÀ
TABLE ACCESS FULL¡û¡ß¡ß¡ß¡ûɽ¤ò¹½À®¤¹¤ë¤¹¤Ù¤Æ¤Î¥Ö¥í¥Ã¥¯¤Ë¥¢¥¯¥»¥¹¡Êɽ¤ÎÂçÉôʬ¤Ë¥¢¥¯¥»¥¹¤¹¤ë»þ¤ËºÇŬ¡Ë
INDEX RANGE SCAN¡ß¡û¡û¡û¡ßº÷°ú¤ËÂФ·¤ÆÈϰϸ¡º÷¤ò¹Ô¤¦¡Êɽ¤Î10%°Ê²¼¤Î¥Ç¡¼¥¿¤Î¾ì¹ç¤ËºÇŬ¡Ë
INDEX UNIQUE SCAN¡ß¡û¡û¡û¡ß°ì°Õº÷°ú¤ËÂФ·¤Æ1¹Ôʸ¤Î¥Ç¡¼¥¿¤ÎROWID¤ò¼èÆÀ
TABLE ACCESS BY INDEX ROWID¡ß¡û¡û¡û¡ßINDEX RANGE SCAN¤äINDEX UNIQUE SCAN¤Ë¤è¤Ã¤Æ¼èÆÀ¤µ¤ì¤¿ÂоݹԤÎROWID¤ò»ÈÍѤ·¡¢³ºÅöɽ¤Ë¥¢¥¯¥»¥¹¤·¥Ç¡¼¥¿¼èÆÀ¤ò¹Ô¤¦
ɬ¤ºINDEX SCAN¤È¥»¥Ã¥È¤Ç½ÐÎϤµ¤ì¤ë
INDEX FULL SCAN¡ß¡û¡û¡û¡ßº÷°ú¤òÁ´¤ÆÆɤ߹þ¤ó¤Ç¥Ç¡¼¥¿¼èÆÀ¤¹¤ë¡£
º÷°ú¥µ¥¯¥»¥¹¤À¤±¤ÇɬÍפʥǡ¼¥¿¤¬¼èÆÀ¤Ç¤­¤ë¾ì¹ç¤ËÁªÂò¤µ¤ì¤ë¡ÊINDEX FULL SCAN¸å¤Ïɽ¤Ë¥¢¥¯¥»¥¹¤¹¤ë¤³¤È¤Ï¤Ê¤¤¡Ë
INDEX FAST FULL SCAN¡û¡ß¡ß¡ß¡ûINDEX FULL SCAN¤ÈƱ¤¸¤À¤¬¡¢1²ó¤ÎÆɤ߹þ¤ß¤ÇÊ£¿ô¤Îº÷°ú¥Ö¥í¥Ã¥¯¤òÆɤ߹þ¤à

­¡ °ìÅÙ¤ÎÆɤ߹þ¤ß¤Ç¡¢db_file_multiblock_read_count½é´ü²½¥Ñ¥é¥á¡¼¥¿¤Ç»ØÄꤵ¤ì¤¿¿ô¤ÎϢ³¤·¤¿¥Ö¥í¥Ã¥¯¤ò¤Þ¤È¤á¤ÆÆɤ߹þ¤à

­¢ °ìÅÙ¤ÎÆɤ߹þ¤ß¤Ç¡¢1¤Ä¤Î¥Ö¥í¥Ã¥¯¤òÆɤ߹þ¤à

­£ ¥Ç¥£¥¹¥¯¤«¤éÆɤ߹þ¤ó¤À¥Ö¥í¥Ã¥¯¤ò¤¹¤Ù¤Æ¥Ð¥Ã¥Õ¥¡¥­¥ã¥Ã¥·¥å¤Ë¾è¤»¤ë

­¤ ¥½¡¼¥È¤µ¤ì¤¿¾õÂ֤ǥǡ¼¥¿¤ò¼èÆÀ¤Ç¤­¤ë

­¥ ¥Ñ¥é¥ì¥ë¼Â¹Ô¤¬¤Ç¤­¤ë

 

·ë¹ç¥¢¥ë¥´¥ê¥º¥à

·ë¹çÀâÌÀ
NESTED LOOPS·ë¹çÂоݤȤʤëɽ¤ÎÃê½Ð¥ì¥³¡¼¥É¤¬Èó¾ï¤Ë¾¯¤Ê¤¤»þ¤Ë¸ú²ÌŪ¡ÊÆâÉôɽ¤Ø¤Î¥¢¥¯¥»¥¹¤òINDEX¤Ç¹Ê¤ê¹þ¤á¤Ê¤¤¾ì¹ç¤Ï¡¢¥¯¥í¥¹·ë¹ç¤ÈƱ¤¸¤Ë¤Ê¤ë¡Ë
ÆâÉôɽ¤Î¥ì¥³¡¼¥É¹Ê¤ê¹þ¤ß¤òÇ¡²¿¤Ë¾¯¤Ê¤¯¤¹¤ë¤«¤¬½ÅÍס£¤Þ¤¿¥á¥â¥ê»ÈÍÑΨ¤¬¾¯¤Ê¤¤
ÈÝÄê¾ò·ï¡Ê<>¡¢!=¡Ë¤¬ÍøÍѤǤ­¤ëÍ£°ì¤Î¥¢¥ë¥´¥ê¥º¥à
HASH JOIN·ë¹çÂоݤȤʤëɽ¤ÎÃê½Ð¥ì¥³¡¼¥É¤¬Èó¾ï¤Ë¿¤¤¾ì¹ç¤ËÍ­¸ú¡Ê¥Õ¥ë¥¹¥­¥ã¥óƱ»Î¤Î·ë¹ç¤Ê¤É¡Ë
Åù²Á¾ò·ï¤Î¤ß¤Ç»ÈÍѲÄǽ¡£¤Þ¤¿¥Ñ¥é¥ì¥ë¥¯¥¨¥ê¤Ç·ë¹çÂоÝɽ¤òÆɤ߹þ¤á¤ë
¾®¤µ¤¤É½¤Î·ë¹ç¥­¡¼¤ò¥Ï¥Ã¥·¥å´Ø¿ô¤ò»ÈÍѤ·¥Ï¥Ã¥·¥åÃͤËÊÑ´¹¡£¤â¤¦°ìÊý¤ÎÂ礭¤¤¥Æ¡¼¥Ö¥ë¤ò¥¹¥­¥ã¥ó¤··ë¹ç¥­¡¼¤¬¤½¤Î¥Ï¥Ã¥·¥å¤Ë¸ºß¤¹¤ë¤«Ä´¤Ù¤ë
¥Ï¥Ã¥·¥åɽ¤ÏPGA¤ËÊݸ¤¹¤ë°Ù¡¢¾®¤µ¤¤É½¤ò¥Ï¥Ã¥·¥åɽ¤Ë¤·¤¿Êý¤¬¥á¥â¥ê»ÈÍÑÎ̤¬ÍÞ¤¨¤é¤ì¤ë¡Ê¥á¥â¥êÉÔ­¤Î¾ì¹ç¡¢DISK¤ËºîÀ®¤·¥Ñ¥Õ¥©¡¼¥Þ¥ó¥¹Îô²½¤¹¤ë¡Ë
MERGE JOIN SORT JOIN·ë¹çÂоݤȤʤëɽ¤¬¡¢·ë¹çÂоÝÎó¤Ç¥½¡¼¥È¤··ë¹ç¤¹¤ë¡£ÉÔÅù¹æ¤ò»È¤Ã¤¿·ë¹ç¤âÍøÍѲÄǽ¡ÊÈÝÄê(!=)¤ÏÉԲġË
¥Æ¡¼¥Ö¥ë¤ò¥½¡¼¥È¤¹¤ë°Ù¡¢ÊÒÊý¤Î¥Æ¡¼¥Ö¥ë¤òÁ´¤Æ¥¹¥­¥ã¥ó¤·¤¿¤È¤³¤í¤Ç·ë¹ç¤ò½ªÎ»¤Ç¤­¤ë¡£
¥½¡¼¥È¤Î¥³¥¹¥È¤¬¹â¤¤°Ù¡¢¥½¡¼¥È¤ò¥¹¥­¥Ã¥×¤Ç¤­¤ë¥±¡¼¥¹¤Ç¤ÏÍ­¸ú¤È¤Ê¤êÆÀ¤ë¡ÊÂç³µNESTED LOOP ¤« HASH¤ò»È¤¦¡Ë
MERGE JOIN CARTESIAN·ë¹ç¾ò·ï¤¬ÉÔ½½Ê¬¤Ê»þ¤ËÁªÂò¤µ¤ì¤ëľÀÑ·ë¹ç

NESTED LOOPS

select /*+ USE_NL (e d) */ e.fname, d.product from emp e, dept d
where e.lname = 'ÀîÀ¡' and e.id = d.id

| Id  | Operation                    | Name      | Rows  | Bytes | Cost (%CPU)| Time     |
-----------------------------------------------------------------------------------------
|   0 | SELECT STATEMENT             |           |     2 |   114 |     6   (0)| 00:00:01 |
|   1 |  NESTED LOOPS                |           |       |       |            |          |
|   2 |   NESTED LOOPS               |           |     2 |   114 |     6   (0)| 00:00:01 |
|   3 |    TABLE ACCESS FULL         | EMP       |     3 |    90 |     3   (0)| 00:00:01 |¡¡¡ú¶îưɽ¡ÊFULLSCAN¡Ë
|*  4 |    INDEX UNIQUE SCAN         | PK_DEPTID |     1 |       |     0   (0)| 00:00:01 |¡¡¡úÆâÉôɽ¤Ø¤Ï·ë¹ç¥­¡¼¤ÎINDEX¤Ç¥¢¥¯¥»¥¹
|*  5 |   TABLE ACCESS BY INDEX ROWID| DEPT      |     1 |    27 |     1   (0)| 00:00:01 |

Oracle_NestedLoops.png

NESTED LOOPS SEMI

EXISTS¶ç ¤Þ¤¿¤Ï IN¶ç¤ò»ÈÍѤ·¤¿¾ì¹ç¤Î¤ß½Ð¸½¤¹¤ë¡£
·ë²Ì¤Ë¤Ï¶îưɽ¤È¤Ê¤ë¥Æ¡¼¥Ö¥ë¤Î¥Ç¡¼¥¿¤·¤«´Þ¤Þ¤ì¤º¡¢1¹Ô¤Ë¤Ä¤­É¬¤º1¹Ô¤·¤«·ë²Ì¤¬À¸À®¤µ¤ì¤Ê¤¤¡ÊÄ̾ï¤Î·ë¹ç¤Î¾ì¹ç¡¢1ÂÐN¤Î·ë¹ç¤Î¾ì¹ç¤Ï¹Ô¿ô¤¬Áý¤¨¤ë¤³¤È¤¬¤¢¤ë¡Ë
ÆâÉôɽ¤Ë¥Þ¥Ã¥Á¤¹¤ë¹Ô¤ò1¹Ô¤Ç¤âȯ¸«¤·¤¿»þÅÀ¤Ç»Ä¤ê¤Î¹Ô¤Î¸¡º÷¤òÂǤÁÀÚ¤ì¤ë¤¿¤á¡¢Ä̾ï¤Î·ë¹ç¤è¤ê¤â¥Ñ¥Õ¥©¡¼¥Þ¥ó¥¹¤¬Îɤ¤¡£
²¼µ­¤ÏƱ¤¸·ë²Ì¤Ë¤Ê¤ë¤¬¡¢¸å¼Ô¤ÎSQL¤Ï NESTED LOOPS SEMI ¤ò»ÈÍѤ¹¤ë¡£

select d.id, d.product from DEPT d inner join EMP e on d.id=e.id
select * from DEPT d where exists ( select * from EMP e where d.id=e.id)

NESTED LOOPS ANTI

NOT EXISTS¶ç ¤Þ¤¿¤Ï NOT IN¶ç¤ò»ÈÍѤ·¤¿¾ì¹ç¤Î¤ß½Ð¸½¤¹¤ë¡£
ÆâÉôɽ¤Ë¥Þ¥Ã¥Á¤¹¤ë¹Ô¤ò1¹Ô¤Ç¤âȯ¸«¤·¤¿»þÅÀ¤Ç»Ä¤ê¤Î¹Ô¤Î¸¡º÷¤òÂǤÁÀÚ¤ë¤È¤³¤í¤Þ¤ÇƱ¤¸Æ°ºî¡£
¤½¤Î¹Ô¤Ë¤Ä¤¤¤Æ¤Ï¶îưɽ¤Î¹Ô¤ò·ë²Ì¤«¤é½ü³°¤¹¤ë¡£

HASH JOIN

select /*+ USE_HASH (e d) */ e.fname, d.product from emp e, dept d
where e.lname = 'ÀîÀ¡' and e.id = d.id

| Id  | Operation          | Name  | Rows  | Bytes | Cost (%CPU)| Time     |
----------------------------------------------------------------------------
|   0 | SELECT STATEMENT   |       |     2 |   114 |     7  (15)| 00:00:01 |
|*  1 |  HASH JOIN         |       |     2 |   114 |     7  (15)| 00:00:01 |
|*  2 |   TABLE ACCESS FULL| EMP   |     2 |    54 |     3   (0)| 00:00:01 |¡¡¡úEMP¤Î·ë¹ç¥­¡¼¤Ç¥Ï¥Ã¥·¥åɽºîÀ®
|   3 |   TABLE ACCESS FULL| DEPT  |     3 |    90 |     3   (0)| 00:00:01 |¡¡¡ú¥Ï¥Ã¥·¥åÃͤ˥ޥåÁ¤¹¤ë·ë¹ç¥­¡¼¤¬¤¢¤ë¤«¥Á¥§¥Ã¥¯

Oracle_Hash.png

HINT¶ç

/*+ HINT¶ç */
HINT¶çÀâÌÀ
INDEX_FFS(ɽ̾ Pkey)Ê£¿ô¤Îº÷°ú¥Ö¥í¥Ã¥¯¤ò¥Ñ¥é¥ì¥ë½èÍý¤Ë¤ÆÆɤ߹þ¤à¡Ê½ç½ø¤¬Êݾڤµ¤ì¤Ê¤¤°Ù¡¢¥×¥é¥¤¥Þ¥ê¥­¡¼»ØÄê²Äǽ¤Êɽ¤Î count(*) ¤ò¼èÆÀ¤¹¤ë¾ì¹ç¤Ê¤É¤ËÍøÍѤ¹¤ë¡Ë
select /*+ INDEX_FFS(ɽ̾ PKey) */ count(*) from ɽ̾;
PARALLEL(ɽ̾, ÊÂÎóÅÙÅÙ)ÊÂÎó½èÍý¤ò¹Ô¤¦¡£RAC¹½À®¤ÎÊ£¿ô¥Î¡¼¥É¤Î¾ì¹ç¡¢¥¤¥ó¥¿¡¼¥³¥Í¥¯¥È¤¬È¯À¸¤¹¤ë¤Î¤ÇÃí°Õ¡£PARALLEL_FORCE_LOCAL½é´ü²½¥Ñ¥é¥á¡¼¥¿¤òTRUE¤Ë¤¹¤ë¤È¥í¡¼¥«¥ë¤Î¤ß¤ËÀ©¸Â²Äǽ
¸¶¹Æ¥»¥Ã¥·¥ç¥ó¤Îľ¶á¤Î¥Ñ¥é¥ì¥ë¼Â¹Ô¾õ¶·¤Ï¡¢V$PQ_SESSTAT ¤Ç³Îǧ²Äǽ¡£Allocation Width¤¬ÊÂÎóÅÙ¡¢Allocation Height¤¬1¥¤¥ó¥¹¥¿¥ó¥¹Åö¤¿¤ê¤ÎÊÂÎóÅÙ


 

Åý·×¾ðÊó

Åý·×¾ðÊó¤Î¼èÆÀ

DBMS_STATS.GATHER_TABLE_STATS(
    OWNNAME           => '¥¹¥­¡¼¥Þ'
    ,TABNAME          => '¥Æ¡¼¥Ö¥ë'
    ,PARTNAME         => '¥Ñ¡¼¥Æ¥£¥·¥ç¥ó'
    ,ESTIMATE_PERCENT => '¥µ¥ó¥×¥ë¥ì¡¼¥È(%)'
    ,BLOCK_SAMPLE     => '¥µ¥ó¥×¥ë¥ì¡¼¥È(block)'
    ,METHOD_OPT       => '¥Ò¥¹¥È¥°¥é¥àÅý·×'
    ,DEGREE           => 'ÊÂÎóÅÙ'
    ,GRANULARITY      => '¥Ñ¡¼¥Æ¥£¥·¥ç¥óɽ¥ª¥×¥·¥ç¥ó'
    ,CASCADE          => '¥¤¥ó¥Ç¥Ã¥¯¥¹Åý·× ̵ͭ'
);

-- ¼Â¹ÔÎã
DBMS_STATS.GATHER_TABLE_STATS(
    OWNNAME           => 'SCOTT'
    ,TABNAME          => 'COSTS'
    ,ESTIMATE_PERCENT => 50
    ,METHOD_OPT       => 'FOR COLUMNS PROD_ID SIZE 254' -- ¢¨»ØÄê¤Ç¤­¤ëÃͤϸå½Ò
    ,DEGREE           => 2
    ,CASCADE          => TRUE
);
  • METHOD_OPT¥Ñ¥é¥á¡¼¥¿¤Ë¤Ä¤¤¤Æ
    FOR COLUMNS <¥«¥é¥à̾> SIZE <¥Ð¥±¥Ã¥È¿ô(ºÇÂç254¼ïÎà)>
    • ¥Ð¥±¥Ã¥È¿ô¤Ï¥«¥é¥à¤ËÆþ¤Ã¤Æ¤ëÃͤμïÎà¤Ç¡¢¼ïÎà°Ê¾å¤ÎÃͤòÀßÄꤹ¤ë¤³¤È¤ÇÉÑÅÙʬÉÛ¥Ò¥¹¥È¥°¥é¥à¤¬À¸À®¤µ¤ì¤ë¡£¤³¤ì¤Ï¡¢¤½¤ì¤¾¤ì¤ÎÃͤ¬²¿¹Ô¤¢¤ë¤«¡ÊENDPOINT_NUMBER¡ËÀµ³Î¤Ëµ­Ï¿¤¹¤ë¡£
    • ¼ïÎà¤è¤ê¾¯¤Ê¤¤¥Ð¥±¥Ã¥È¤ò»ØÄꤹ¤ë¤È¹â¤µÄ´À°¥Ò¥¹¥È¥°¥é¥à¤¬À¸À®¤µ¤ì¤ë¡£¥½¡¼¥È¤·¤¿¥Ç¡¼¥¿¤Î·ï¿ô¤ò¥Ð¥±¥Ã¥È¿ô¤Ç³ä¤ê¡¢
      ¤½¤Î·ï¿ôʬ¥Ð¥±¥Ã¥È¤Ë³ÊǼ¤·¤Æ¤¤¤­¡¢³ÊǼ¤µ¤ì¤¿ºÇ¸å¤ÎÃͤòµ­Ï¿¡ÊENDPOINT_VALUE¤ÎÃ͡ˤ¹¤ë¡£
      ENDPOINT_VALUE¤¬Æ±¤¸ÃͤΥХ±¥Ã¥È¤¬Ê£¿ô¸ºß¤·¤¿¾ì¹ç¡¢¤½¤ÎÃͤ¬Â¾¤ÎÃͤè¤ê¿¤¯Â¸ºß¤¹¤ë¤³¤È¤ò°ÕÌ£¤¹¤ë¡£¤³¤ì¤ò¥Ý¥Ô¥å¥é¡¼ÃͤȤ¤¤¦¡£
      ¥Ý¥Ô¥å¥é¡¼Ãͤ¬Â¸ºß¤¹¤ë¤È¥Ð¥±¥Ã¥ÈÈÖ¹æ¡ÊENDPOINT_NUMBER¡Ë¤ËÈ´¤±¤¬È¯À¸¤¹¤ë¡£¥Ð¥±¥Ã¥È0¤ÏÆüì¤ÊÃͤǡ¢ºÇ¾®Ãͤ¬Æþ¤Ã¤Æ¤¤¤ë¡£
    • ¥Ò¥¹¥È¥°¥é¥à¤ÎʬÉۤϡ¢USER_HISTOGRAMS¤Ç³Îǧ¤Ç¤­¤ë¡£
    • ¥Ò¥¹¥È¥°¥é¥à¤¬ºîÀ®¤µ¤ì¤¿¥«¥é¥à¤ÏUSER_TAB_COL_STATISTICS¤ÎHISTOGRAMÎó¤Ç³Îǧ¤Ç¤­¤ë
--¥Ç¥£¥¯¥·¥ç¥Ê¥êÅý·×¤Î¼èÆÀ
EXEC DBMS_STATS.GATHER_DICTIONARY_STATS();
--¸ÇÄêɽ¡ÊX$ɽ¡Ë¤ÎÅý·×¼èÆÀ
EXEC DBMS_STATS.GATHER_TABLE_STATS('SYS', 'X$KSWSASTAB', no_invalidate=>false);

Åý·×¾ðÊó¤Î¥ê¥¹¥È¥¢

Åý·×¼ý½¸¤ÎÍúÎò¤ò³Îǧ

select * from user_tab_stats_history;

»ØÄꤷ¤¿»þÅÀ¤ÎÅý·×¾ðÊó¤ò¥ê¥¹¥È¥¢¤¹¤ë

exec dbms_stats.restore_table_stats (ownname=>'¥¹¥­¡¼¥Þ̾', tabname=>'¥Æ¡¼¥Ö¥ë̾', as_of_timestamp=>'»þ´Ö');

Åý·×¾ðÊó¤ò¥í¥Ã¥¯¡Ê¼ý½¸¤µ¤ì¤Ê¤¤¤è¤¦¤Ë¤¹¤ë¡ËµÚ¤Ó¡¢¥¢¥ó¥í¥Ã¥¯¡Ê¼ý½¸¤µ¤ì¤ë¤è¤¦¤Ë¤¹¤ë¡Ë

exec dbms_stats.lock_table_stat(ownname=>'¥¹¥­¡¼¥Þ̾', tabname=>'¥Æ¡¼¥Ö¥ë̾');
exec dbms_stats.unlock_table_stat(ownname=>'¥¹¥­¡¼¥Þ̾', tabname=>'¥Æ¡¼¥Ö¥ë̾');


 

¥¢¥¯¥»¥¹¥Ñ¥¹°ìÍ÷

¼Â¹Ô·×²èÀâÌÀ
AND-EQUALÊ£¿ô¤ÎROWID¥»¥Ã¥È¤«¤é½ÅÊ£¤ò¤Ê¤¯¤·¤Æ¡¢¤½¤ì¤é¤Î¶¦ÄÌÉôʬ¤òÌ᤹¡£
BITMAP CONVERSION TO ROWIDS¥Ó¥Ã¥È¥Þ¥Ã¥×¤òROWID ¤ËÊÑ´¹¤¹¤ë¡£
BITMAP CONVERSION FROM ROWIDSROWID¤ò¥Ó¥Ã¥È¥Þ¥Ã¥×¤ËÊÑ´¹¤¹¤ë¡£
BITMAP CONVERSION COUNTROWID¤Î¿ô¤òÌ᤹¡£
BITMAP INDEX SINGLE VALUE¥Ó¥Ã¥È¥Þ¥Ã¥×¥¤¥ó¥Ç¥Ã¥¯¥¹Æâ¤Î£±¤Ä¤Î¥­¡¼¤Î¥Ó¥Ã¥È¥Þ¥Ã¥×¤ò»²¾È¤¹¤ë¡£
BITMAP INDEX RANGE SCAN¥Ó¥Ã¥È¥Þ¥Ã¥×¥¤¥ó¥Ç¥Ã¥¯¥¹Æâ¤ÎÆÃÄê¤ÎÈϰϤΥ­¡¼¤Î¥Ó¥Ã¥È¥Þ¥Ã¥×¤ò»²¾È¤¹¤ë¡£
BITMAP INDEX FULL SCAN¥Ó¥Ã¥È¥Þ¥Ã¥×¥¤¥ó¥Ç¥Ã¥¯¥¹Æâ¤ÎÁ´¤Æ¤ÎÈϰϤΥ­¡¼¤Î¥Ó¥Ã¥È¥Þ¥Ã¥×¤ò»²¾È¤¹¤ë¡£
BITMAP MERGE¥ì¥ó¥¸¥¹¥­¥ã¥ó¤Ë¤è¤ëÊ£¿ô¤Î¥Ó¥Ã¥È¥Þ¥Ã¥×¤ò£±¤Ä¤Î¥Ó¥Ã¥È¥Þ¥Ã¥×¤Ë¥Þ¡¼¥¸¤¹¤ë¡£
BITMAP MINUS°ìÊý¤Î¥Ó¥Ã¥È¥Þ¥Ã¥×¤Î¥Ó¥Ã¥È¤ò¡¢¤â¤¦°ìÊý¤Î¥Ó¥Ã¥È¥Þ¥Ã¥×¤«¤é°ú¤¯¡£
BITMAP OR£²¤Ä¤Î¥Ó¥Ã¥È¥Þ¥Ã¥×¤ÎOR±é»»¤ò¹Ô¤¦¡£
BITMAP AND£²¤Ä¤Î¥Ó¥Ã¥È¥Þ¥Ã¥×¤ÎAND±é»»¤ò¹Ô¤¦¡£
BITMAP KEY ITERATIONɽ¤«¤é³Æ¹Ô¤òÃê½Ð¤·¤Æ¥Ó¥Ã¥È¥Þ¥Ã¥×º÷°ú¤Î¥Ó¥Ã¥È¥Þ¥Ã¥×¤È¾È¹ç¤·¡¢³ºÅö¤¹¤ë¤â¤Î¤Î¥Ó¥Ã¥È¥Þ¥Ã¥×¤ò¤¹¤Ù¤ÆÃê½Ð¤¹¤ë¡£¡Ê¤³¤Î¸åBITMAP MERGEÁàºî¤¬¹Ô¤ï¤ì¤ë¡Ë
CONNECT BYCONNECT BY¶ç¤ò´Þ¤ó¤Ç¤¤¤ëÌ䤤¹ç¤ï¤»¤Î¹Ô¤ò¼è¤ê½Ð¤¹¡£
CONCATENATIONÊ£¿ô¤Î¹Ô¥»¥Ã¥È¤òUNION-ALL¤·¤ÆÌ᤹¡£
COUNTÁªÂò¤µ¤ì¤¿¹Ô¤Î¹Ô¿ô¤ò¥«¥¦¥ó¥È¤¹¤ë¡£
COUNT STOPKEYÁªÂò¤µ¤ì¤¿¹Ô¤òROWNUM¶ç¤ÇÀ©¸Â¤¹¤ë¡£
DOMAIN INDEX¥É¥á¥¤¥óº÷°ú¤«¤éROWID¤ò¼è¤ê½Ð¤¹¡£
FILTER¹Ô¥»¥Ã¥È¤«¤éÉÔÍפʤâ¤Î¤ò¼è¤ê½ü¤¤¤ÆÌ᤹¡£
FIRST ROW¹Ô¥»¥Ã¥È¤ÎºÇ½é¤Î¹Ô¤Î¤ßÌ᤹¡£
FOR UPDATEFOR UPDATE¶ç¤¬´Þ¤Þ¤ì¤Æ¤¤¤ëÌ䤤¹ç¤ï¤»¤Ë¤è¤Ã¤ÆÌᤵ¤ì¤¿¹Ô¤ò¼è¤ê½Ð¤·¤Æ¥í¥Ã¥¯¤¹¤ë¡£
HASH GROUP BYGROUP BY¶ç¤¬´Þ¤Þ¤ì¤Æ¤¤¤ëÌ䤤¹ç¤ï¤»¤Î¹Ô¥»¥Ã¥È¤òÊ£¿ô¤Î¥°¥ë¡¼¥×¤Ë¥Ï¥Ã¥·¥ó¥°¤¹¤ë¡£
HASH JOIN£²¤Ä¤Î¹Ô¥»¥Ã¥È¤ò·ë¹ç¤·¤ÆÌ᤹¡£
HASH JOIN ANTI¥Ï¥Ã¥·¥å¡Êº¸Â¦¡Ë¥¢¥ó¥Á·ë¹ç
HASH JOIN RIGHT ANTI¥Ï¥Ã¥·¥å¡Ê±¦Â¦¡Ë¥¢¥ó¥Á·ë¹ç
HASH JOIN SEMI¥Ï¥Ã¥·¥å¡Êº¸Â¦¡Ë¥»¥ß·ë¹ç
HASH JOIN RIGHT SEMI¥Ï¥Ã¥·¥å¡Ê±¦Â¦¡Ë¥»¥ß·ë¹ç
HASH JOIN OUTER¥Ï¥Ã¥·¥å¡Êº¸Â¦¡Ë³°Éô·ë¹ç
HASH JOIN RIGHT OUTER¥Ï¥Ã¥·¥å¡Ê±¦Â¦¡Ë³°Éô·ë¹ç
INDEX UNIQUE SCANº÷°ú¤«¤éñ°ìROWID¤ò¼è¤ê½Ð¤¹¡£
INDEX RANGE SCANº÷°ú¤«¤éÆÃÄê¤ÎÈϰϤÎROWID¤ò¼è¤ê½Ð¤¹¡£¡Ê¾º½ç¡Ë
INDEX RANGE SCAN DESCENDINGº÷°ú¤«¤éÆÃÄê¤ÎÈϰϤÎROWID¤ò¼è¤ê½Ð¤¹¡£¡Ê¹ß½ç¡Ë
INDEX FULL SCANº÷°ú¤«¤é¤¹¤Ù¤Æ¤ÎROWID¤ò¼èÆÀ¤¹¤ë¡£¡Ê¾º½ç¡Ë
INDEX FULL SCAN DESCENDINGº÷°ú¤«¤é¤¹¤Ù¤Æ¤ÎROWID¤ò¼èÆÀ¤¹¤ë¡£¡Ê¹ß½ç¡Ë
INDEX FAST FULL SCAN¥Þ¥ë¥Á¥Ö¥í¥Ã¥¯Æɤ߹þ¤ß¤ò»ÈÍѤ·¤Æ¡¢º÷°ú¤Î¤¹¤Ù¤Æ¤ÎROWID¤ò¼èÆÀ¤¹¤ë¡£
INDEX SKIP SCANÏ¢·ëº÷°ú¤ÎÀèƬÎó¤ò»ÈÍѤ»¤º¤Ëº÷°ú¤«¤éROWID¤ò¼èÆÀ¤¹¤ë¡£
INLIST ITERATORIN¥ê¥¹¥ÈÆâ¤Î³ÆÃͤËÂФ·¤Æ¡¢¼Â¹Ô·×²èÆâ¤ÎÁàºî¤ò·«¤êÊÖ¤¹¡£
INTERSECTION£²¤Ä¤Î¹Ô¥»¥Ã¥È¤«¤é½ÅÊ£¤ò¤Ê¤¯¤·¤Æ¡¢¤½¤ì¤é¤Î¶¦ÄÌÉôʬ¤òÌ᤹¡£
MERGE JOIN£²¤Ä¤Î¹Ô¥»¥Ã¥È¤ò¤½¤ì¤¾¤ìÆÃÄê¤ÎÃͤǥ½¡¼¥È¤·¡¢°ìÊý¤Î¹Ô¥»¥Ã¥È¤ò¤â¤¦°ìÊý¤Î¹Ô¥»¥Ã¥È¤Î¹Ô¤È¤Ä¤­¹ç¤ï¤»¤Æ·ë²Ì¤òÌ᤹¡£
MERGE JOIN OUTER³°Éô·ë¹ç¤ò¼Â¹Ô¤¹¤ë¥Þ¡¼¥¸·ë¹ç
MERGE JOIN ANTI¥Þ¡¼¥¸¥¢¥ó¥Á·ë¹ç
MERGE JOIN SEMI¥Þ¡¼¥¸¥»¥ß·ë¹ç
MERGE JOIN CARTESIAN¾¤Îɽ¤Ø¤Î·ë¹ç¾ò·ï¤ò»ý¤¿¤Ê¤¤¥Þ¡¼¥¸·ë¹ç¡Ê¥¯¥í¥¹·ë¹ç¡Ë
MAT_VIEW REWRITE ACCESS FULL¥Þ¥Æ¥ê¥¢¥é¥¤¥º¥É¥Ó¥å¡¼¤ÎÁ´¤Æ¤Î¹Ô¤Î¼è¤ê½Ð¤·
MAT_VIEW REWRITE ACCESS SAMPLE¥Þ¥Æ¥ê¥¢¥é¥¤¥º¥É¥Ó¥å¡¼¤Î¥µ¥ó¥×¥ë¹Ô¤Î¼è¤ê½Ð¤·
MAT_VIEW REWRITE ACCESS CLUSTERº÷°ú¥¯¥é¥¹¥¿¤Î¥­¡¼Ãͤˤè¤ë¡¢¥Þ¥Æ¥ê¥¢¥é¥¤¥º¥É¥Ó¥å¡¼¤«¤é¤Î¹Ô¤Î¼è¤ê½Ð¤·
MAT_VIEW REWRITE ACCESS HASH¥Ï¥Ã¥·¥å¥¯¥é¥¹¥¿¤Î¥­¡¼Ãͤˤè¤ë¡¢¥Þ¥Æ¥ê¥¢¥é¥¤¥º¥É¥Ó¥å¡¼¤«¤é¤Î¹Ô¤Î¼è¤ê½Ð¤·
MAT_VIEW REWRITE ACCESS BY ROWID RANGEROWID¤ÎÈϰϤˤè¤ë¡¢¥Þ¥Æ¥ê¥¢¥é¥¤¥º¥É¥Ó¥å¡¼¤«¤é¤Î¹Ô¤Î¼è¤ê½Ð¤·
MAT_VIEW REWRITE ACCESS SAMPLE BY ROWID RANGEROWID¤ÎÈϰϤˤè¤ë¡¢¥Þ¥Æ¥ê¥¢¥é¥¤¥º¥É¥Ó¥å¡¼¤«¤é¤Î¥µ¥ó¥×¥ë¹Ô¤Î¼è¤ê½Ð¤·
MAT_VIEW REWRITE ACCESS BY USER ROWID»ØÄêROWID¤Ë¤è¤ë¡¢¥Þ¥Æ¥ê¥¢¥é¥¤¥º¥É¥Ó¥å¡¼¤«¤é¤Î¹Ô¤Î¼è¤ê½Ð¤·
MAT_VIEW REWRITE ACCESS BY INDEX ROWIDº÷°úROWID¤Ë¤è¤ë¡¢¥Þ¥Æ¥ê¥¢¥é¥¤¥º¥É¥Ó¥å¡¼¤«¤é¤Î¹Ô¤Î¼è¤ê½Ð¤·¡ÊÈó¥Ñ¡¼¥Æ¥£¥·¥ç¥ó¡Ë
MAT_VIEW REWRITE ACCESS BY GLOBAL INDEX ROWID¥°¥í¡¼¥Ð¥ëº÷°úROWID¤Î¤ß¤Ë¤è¤ë¡¢¥Þ¥Æ¥ê¥¢¥é¥¤¥º¥É¥Ó¥å¡¼¤«¤é¤Î¹Ô¤Î¼è¤ê½Ð¤·¡Ê¥Ñ¡¼¥Æ¥£¥·¥ç¥ó¡Ë
MAT_VIEW REWRITE ACCESS BY LOCAL INDEX ROWID£±¤Ä°Ê¾å¤Î¥í¡¼¥«¥ëº÷°úROWID¤È¥°¥í¡¼¥Ð¥ëº÷°úROWID¤Ë¤è¤ë¡¢¥Þ¥Æ¥ê¥¢¥é¥¤¥º¥É¥Ó¥å¡¼¤«¤é¤Î¹Ô¤Î¼è¤ê½Ð¤·¡Ê¥Ñ¡¼¥Æ¥£¥·¥ç¥ó¡Ë
MINUS°ìÊý¤Î¹Ô¥»¥Ã¥È¤Ë¤¢¤Ã¤Æ¡¢¤â¤¦°ìÊý¤Î¹Ô¥»¥Ã¥È¤Ë¤Ê¤¤¤â¤Î¤ò¤â¤É¤¹¡£
NESTED LOOPS³°Â¦É½¤Î³Æ¹Ô¤òÆâ¦ɽ¤Î³Æ¹Ô¤ÈÈæ³Ó¤·¤Æ¤â¤É¤¹¡£
NESTED LOOPS OUTER³°Éô·ë¹ç¤ò¼Â¹Ô¤¹¤ë¥Í¥¹¥Æ¥Ã¥É¥ë¡¼¥×·ë¹ç
PARTITIONPARTITION_START¡ÁPARTITION_STOP¤ÎÈϰϤγƥѡ¼¥Æ¥£¥·¥ç¥ó¤ËÂФ·¤Æ¡¢¼Â¹Ô·×²èÆâ¤ÎÁàºî¤ò·«¤êÊÖ¤¹¡£
PARTITION SINGLE£±¤Ä¤Î¥Ñ¡¼¥Æ¥£¥·¥ç¥ó¤Ø¤ÎÌ䤤¹ç¤ï¤»
PARTITION ITERATRORÊ£¿ô¤Î¥Ñ¡¼¥Æ¥£¥·¥ç¥ó¤Ø¤ÎÌ䤤¹ç¤ï¤»
PARTITION ALLÁ´¤Æ¤Î¤Î¥Ñ¡¼¥Æ¥£¥·¥ç¥ó¤Ø¤ÎÌ䤤¹ç¤ï¤»
PARTITION INLISTIN¥ê¥¹¥È¤ò´ð½à¤Ë¤·¤¿·«¤êÊÖ¤·½èÍý
PARTITION INVALIDÁàºî¥Ñ¡¼¥Æ¥£¥·¥ç¥ó¤¬¶õ¤Ç¤¢¤ë¾õÂÖ
PX ITERATOR BLOCK( OR CHUNK)¥Ñ¥é¥ì¥ë¥¹¥­¥ã¥ó¡¦¥¹¥ì¡¼¥Ö´Ö¤Ç¤Î¥ª¥Ö¥¸¥§¥¯¥È¤Î¥Ö¥í¥Ã¥¯¤Þ¤¿¤Ï¥Á¥ã¥ó¥¯Ã±°Ì¤Ç¤Îʬ³ä
PX COORDINATOR¥Ñ¥é¥ì¥ë¥¯¥¨¥ê¡¦¥³¡¼¥Ç¥£¥Í¡¼¥¿¡¼¤ò»ÈÍѤ¹¤ë
PX PARTITIONPARTITION¤ÈƱµÁ¤À¤¬¡¢¥Ñ¥é¥ì¥ë¼Â¹Ô·×²è¤Ëɽ¼¨¤µ¤ì¤ë
PX RECEIVEPX SEND¥Î¡¼¥É¤«¤éÁ÷¿®¤µ¤ì¤ë¥Ñ¡¼¥Æ¥£¥·¥ç¥ó²½¥Ç¡¼¥¿¤òÆɤ߼è¤ë
PX SEND QC(RANDOM) (OR HASH) (OR RANGE)¥¹¥ì¡¼¥Ö¤Î£²¤Ä¤Î¥»¥Ã¥È´Ö¤Ë¤ª¤±¤ëÇÛʬÊýË¡¤ò¼ÂÁõ¤¹¤ë
REMOTE¥ê¥â¡¼¥È¥Ç¡¼¥¿¥Ù¡¼¥¹¤«¤é¤Î¥Ç¡¼¥¿¤Î¼è¤ê½Ð¤·
SEQUENCE¥·¡¼¥±¥ó¥¹¤Ø¤ÎÁàºî¤òȼ¤¦½èÍý
SORT AGGREGATE¥°¥ë¡¼¥×´Ø¿ô¤òÍѤ¤¤¿·ë²Ì¤Ë¤ª¤±¤ëñ°ì¹Ô¤Î¼è¤ê½Ð¤·
SORT UNIQUE¹Ô¥»¥Ã¥È¤ò¥½¡¼¥È¤·¤Æ½ÅÊ£¤ò¼è¤ê½ü¤¯
SORT GROUP BYGROUP BY¶çÌ䤤¹ç¤ï¤»¤Ë¤è¤Ã¤ÆÊ£¿ô¥°¥ë¡¼¥×¤Ë¥½¡¼¥È¤¹¤ë½èÍý
SORT JOIN¥Þ¡¼¥¸·ë¹çÁ°¤Î¥½¡¼¥È½èÍý
SORT ORDER BYORDER BY¶çÌ䤤¹ç¤ï¤»¤Ë¤è¤ë¥½¡¼¥È½èÍý
TABLE ACCESS FULLɽ¤ÎÁ´¹Ô¤Î¼è¤ê½Ð¤·
TABLE ACCESS SAMPLEɽ¤Î¥µ¥ó¥×¥ë¹Ô¤Î¼è¤ê½Ð¤·
TABLE ACCESS CLUSTERɽ¤Îº÷°ú¥¯¥é¥¹¥¿¥­¡¼Ãͤˤè¤ë¹Ô¤Î¼è¤ê½Ð¤·
TABLE ACCESS HASHɽ¤Î¥Ï¥Ã¥·¥å¥¯¥é¥¹¥¿¥­¡¼Ãͤˤè¤ë¹Ô¤Î¼è¤ê½Ð¤·
TABLE ACCESS BY ROWID RANGEɽ¤ÎÆÃÄê¤ÎROWIDÈϰϤˤè¤ë¹Ô¤Î¼è¤ê½Ð¤·
TABLE ACCESS BY USER ROWID»ØÄꤷ¤¿ROWID¤Ë¤è¤ë¹Ô¤Î¼è¤ê½Ð¤·
TABLE ACCESS BY INDEX ROWIDº÷°úROWID¤Ë¤è¤ë¹Ô¤Î¼è¤ê½Ð¤·¡ÊÈó¥Ñ¡¼¥Æ¥£¥·¥ç¥ó¡Ë
TABLE ACCESS BY GLOBAL INDEX ROWID¥°¥í¡¼¥Ð¥ëº÷°úROWID¤Î¤ß¤Ë¤è¤ë¡¢¹Ô¤Î¼è¤ê½Ð¤·¡Ê¥Ñ¡¼¥Æ¥£¥·¥ç¥ó¡Ë
TABLE ACCESS BY LOCAL INDEX ROWID£±¤Ä°Ê¾å¤Î¥í¡¼¥«¥ëº÷°úROWID¤È¥°¥í¡¼¥Ð¥ëº÷°úROWID¤Ë¤è¤ë¡¢¹Ô¤Î¼è¤ê½Ð¤·¡Ê¥Ñ¡¼¥Æ¥£¥·¥ç¥ó¡Ë
UNION£²¤Ä¤Î¹Ô¥»¥Ã¥È¤«¤é½ÅÊ£¤ò¤Ê¤¯¤·¤ÆÏ¢·ë·ë²Ì¤òÌ᤹
VIEW¥Ó¥å¡¼¤Ø¤ÎÌ䤤¹ç¤ï¤»·ë²Ì¤òÊ̤νèÍý¤ËÌ᤹


 

¥È¥Ã¥×   ÊÔ½¸ Åà·ë²ò½ü º¹Ê¬ źÉÕ Ê£À½ ̾Á°Êѹ¹ ¥ê¥í¡¼¥É   ¿·µ¬ °ìÍ÷ ñ¸ì¸¡º÷ ºÇ½ª¹¹¿·   ¥Ø¥ë¥×   ºÇ½ª¹¹¿·¤ÎRSS
Last-modified: 2015-12-20 (Æü) 19:18:23 (3041d)