Oracle ±íÁ¬½Ó·½Ê½½éÉÜ£¨SML + NL + HJ£©
JoinÊÇÒ»ÖÖÊÔͼ½«Á½¸ö±í½áºÏÔÚÒ»ÆðµÄν´Ê£¬Ò»´ÎÖ»ÄÜÁ¬½Ó2¸ö±í£¬±íÁ¬½ÓÒ²¿ÉÒÔ±»³ÆÎª±í¹ØÁª¡£ÔÚºóÃæµÄÐðÊöÖУ¬ÎÒÃǽ«»áʹÓÔrow source”À´´úÌæ”±í”£¬ÒòΪʹÓÃrow source¸üÑϽ÷һЩ£¬²¢ÇÒ½«²ÎÓëÁ¬½ÓµÄ2¸örow source·Ö±ð³ÆÎªrow source1ºÍrow source 2¡£Join¹ý³ÌµÄ¸÷¸ö²½Öè¾³£ÊÇ´®ÐвÙ×÷£¬¼´Ê¹Ïà¹ØµÄrow source¿ÉÒÔ±»²¢ÐзÃÎÊ£¬¼´¿ÉÒÔ²¢ÐеĶÁÈ¡×öjoinÁ¬½ÓµÄÁ½¸örow sourceµÄÊý¾Ý£¬µ«ÊÇÔÚ½«±íÖзûºÏÏÞÖÆÌõ¼þµÄÊý¾Ý¶ÁÈëµ½ÄÚ´æÐγÉrow sourceºó£¬joinµÄÆäËü²½ÖèÒ»°ãÊÇ´®Ðеġ£ÓжàÖÖ·½·¨¿ÉÒÔ½«2¸ö±íÁ¬½ÓÆðÀ´£¬µ±È»Ã¿ÖÖ·½·¨¶¼ÓÐ×Ô¼ºµÄÓÅȱµã£¬Ã¿ÖÖÁ¬½ÓÀàÐÍÖ»ÓÐÔÚÌØ¶¨µÄÌõ¼þϲŻᷢ»Ó³öÆä×î´óÓÅÊÆ¡£
¡¡¡¡row source(±í)Ö®¼äµÄÁ¬½Ó˳Ðò¶ÔÓÚ²éѯµÄЧÂÊÓзdz£´óµÄÓ°Ï졣ͨ¹ýÊ×ÏÈ´æÈ¡Ìض¨µÄ±í£¬¼´½«¸Ã±í×÷ΪÇý¶¯±í£¬ÕâÑù¿ÉÒÔÏÈÓ¦ÓÃijЩÏÞÖÆÌõ¼þ£¬´Ó¶øµÃµ½Ò»¸ö½ÏСµÄrow source£¬Ê¹Á¬½ÓµÄЧÂʽϸߣ¬ÕâÒ²¾ÍÊÇÎÒÃdz£ËµµÄÒªÏÈÖ´ÐÐÏÞÖÆÌõ¼þµÄÔÒò¡£Ò»°ãÊÇÔÚ½«±í¶ÁÈëÄÚ´æÊ±£¬Ó¦ÓÃwhere×Ó¾äÖжԸñíµÄÏÞÖÆÌõ¼þ¡£
¡¡¡¡¸ù¾Ý2¸örow sourceµÄÁ¬½ÓÌõ¼þµÄÖвÙ×÷·ûµÄ²»Í¬£¬¿ÉÒÔ½«Á¬½Ó·ÖΪµÈÖµÁ¬½Ó(ÈçWHERE A.COL3 = B.COL4)¡¢·ÇµÈÖµÁ¬½Ó(WHERE A.COL3 > B.COL4)¡¢ÍâÁ¬½Ó(WHERE A.COL3 = B.COL4(+))¡£ÉÏÃæµÄ¸÷¸öÁ¬½ÓµÄÁ¬½ÓÔÀí¶¼»ù±¾Ò»Ñù£¬ËùÒÔΪÁ˼òµ¥ÆÚ¼ä£¬ÏÂÃæÒÔµÈÖµÁ¬½ÓΪÀý½øÐнéÉÜ¡£
¡¡¡¡ÔÚºóÃæµÄ½éÉÜÖУ¬¶¼ÒÑ£º
¡¡¡¡SELECT A.COL1, B.COL2
¡¡¡¡from A, B
¡¡¡¡WHERE A.COL3 = B.COL4;
¡¡¡¡ÎªÀý½øÐÐ˵Ã÷£¬¼ÙÉèA±íΪRow Soruce1£¬ÔòÆä¶ÔÓ¦µÄÁ¬½Ó²Ù×÷¹ØÁªÁÐΪCOL 3£»B±íΪRow Soruce2£¬ÔòÆä¶ÔÓ¦µÄÁ¬½Ó²Ù×÷¹ØÁªÁÐΪCOL 4£»
¡¡¡¡Á¬½ÓÀàÐÍ£º
¡¡¡¡Ä¿Ç°ÎªÖ¹£¬ÎÞÂÛÁ¬½Ó²Ù×÷·ûÈçºÎ£¬µäÐ͵ÄÁ¬½ÓÀàÐ͹²ÓÐ3ÖÖ£º
¡¡¡¡ÅÅÐò - - ºÏ²¢Á¬½Ó(Sort Merge Join (SMJ) )
¡¡¡¡Ç¶Ì×Ñ»·(Nested Loops (NL) )
¡¡¡¡¹þÏ£Á¬½Ó(Hash Join)
¡¡¡¡ÅÅÐò - - ºÏ²¢Á¬½Ó(Sort Merge Join, SMJ)
¡¡¡¡ÄÚ²¿Á¬½Ó¹ý³Ì£º
¡¡¡¡1) Ê×ÏÈÉú³Érow source1ÐèÒªµÄÊý¾Ý£¬È»ºó¶ÔÕâЩÊý¾Ý°´ÕÕÁ¬½Ó²Ù×÷¹ØÁªÁÐ(ÈçA.col3)½øÐÐÅÅÐò¡£
¡¡¡¡2) ËæºóÉú³Érow source2ÐèÒªµÄÊý¾Ý£¬È»ºó¶ÔÕâЩÊý¾Ý°´ÕÕÓësort source1¶ÔÓ¦µÄÁ¬½Ó²Ù×÷¹ØÁªÁÐ(ÈçB.col4)½øÐÐÅÅÐò¡£
¡¡¡¡3) ×îºóÁ½±ßÒÑÅÅÐòµÄÐб»·ÅÔÚÒ»ÆðÖ´Ðкϲ¢²Ù×÷£¬¼´½«2¸örow source°´ÕÕÁ¬½ÓÌõ¼þÁ¬½ÓÆðÀ´
¡¡¡¡ÏÂÃæÊÇÁ¬½Ó²½ÖèµÄͼÐαíʾ£º
¡¡¡¡MERGE
¡¡¡¡/\
¡¡¡¡SORTSORT
¡¡¡¡||
¡¡¡¡Row Source 1Row Source 2
¡¡¡¡Èç¹ûrow sourceÒѾÔÚ
Ïà¹ØÎĵµ£º
OracleÊý¾Ý¿âÖÐÌṩÁËͬÒå´Ê¹ÜÀíµÄ¹¦ÄÜ¡£Í¬Òå´ÊÊÇÊý¾Ý¿â·½°¸¶ÔÏóµÄÒ»¸ö±ðÃû£¬¾³£ÓÃÓÚ¼ò»¯¶ÔÏó·ÃÎʺÍÌá¸ß¶ÔÏó·ÃÎʵݲȫÐÔ¡£ÔÚʹÓÃͬÒå´Êʱ£¬OracleÊý¾Ý¿â½«Ëü·Òë³É¶ÔÓ¦·½°¸¶ÔÏóµÄÃû×Ö¡£ÓëÊÓͼÀàËÆ£¬Í¬Òå´Ê²¢²»Õ¼ÓÃʵ¼Ê´æ´¢¿Õ¼ä£¬Ö»ÓÐÔÚÊý¾Ý×ÖµäÖб£´æÁËͬÒå´ÊµÄ¶¨Òå¡£ÔÚOracleÊý¾Ý¿âÖеĴ󲿷ÖÊý¾Ý¿â¶ÔÏó£¬Èç±í¡¢ÊÓͼ¡¢Í ......
/*connect byº¯Êý*/
CREATE TABLE TBL_TEST
(
ID NUMBER,
NAME VARCHAR2(100 BYTE),
PID NUMBER   ......
alter table t_att_over_haul_safe_pres add c clob;
update t_att_over_haul_safe_pres set c=prt_precautions;
alter table t_att_over_haul_safe_p ......
Ë÷ÒýÌøÔ¾Ê½É¨Ãè(index skip scan)ÊÇOracle9iµÄÒ»¸öеÄÖ´ÐÐÌØÐÔ£¬ÓÈÆäÊÊÓÃÓÚʹÓÃÁ¬½ÓË÷ÒýºÍ·ÃÎʶàÖµË÷ÒýµÄOracle²éѯ¡£
Ë÷ÒýÌøÔ¾Ê½É¨Ãè(index skip scan)ÊÇOracle9iµÄÒ»¸öеÄÖ´ÐÐÌØÐÔ£¬ÓÈÆäÊÊÓÃÓÚʹÓÃÁ¬½ÓË÷ÒýºÍ·ÃÎʶàÖµË÷ÒýµÄOracle²éѯ¡£ÈÃÎÒÃÇ¿´ÒÔϵķ¶Àý¡£Çë×¢Òâ ......