[À§·Î]

<¿øÀÎ>

<SQL¹®>

 

<Á¶Ä¡ »çÇ×>

  1. Open ÃÊâ±â¿¡´Â Hint ¾øÀÌ SQL ÀÛ¼º (¿ÉƼ¸¶ÀÌÁ®ÀÇ ÆÇ´ÜÀ» ¿ì¼±)
  2. Æ©´×ÀÌ ÇÊ¿äÇÒ °æ¿ì (¿ÉƼ¸¶ÀÌÁ®ÀÇ ÆÇ´ÜÀ» ¹«½Ã, Hint ÁöÁ¤,Loop,Hash,Merge·Î ÁöÁ¤)

<±âŸ>

  1. Áßø ·çÇÁ Á¶ÀÎ(Nested Loop Join) Loop
  2. Áßø ·çÇÁ Á¶ÀÎ(Nested Loop Join)¿¡¼­´Â ¿ì¼± Å×À̺í Áß Çϳª¸¦ ½ºÄµÇÕ´Ï´Ù. ÀÌ ¶§ ±× Å×À̺íÀÇ ¸ðµç Çà¿¡ ´ëÇÏ¿© µÎ ¹ø° Å×À̺íÀ» Á¶È¸ÇÏ¿© ÀÏÄ¡µÇ´Â ÇàÀ» °Ë»öÇÕ´Ï´Ù. ÀÌ °æ¿ì¿¡ µÎ Å×À̺íÀ» ¿ÜºÎ(Outer) ÀÔ·Â ¹× ³»ºÎ(Inner) ÀÔ·ÂÀ̶ó°í ºÎ¸¨´Ï´Ù. ¿ÜºÎ(Outer) ÀÔ·ÂÀÇ °¢ °ª¸¶´Ù ³»ºÎ(Inner) ÀÔ·ÂÀ» ½ºÄµÇÏ¿© ÀÏÄ¡ÇÏ´Â °ÍÀ» ã´Â °ÍÀÌ ¹Ù·Î ±âº» ¾Ë°í¸®ÁòÀÔ´Ï´Ù. ³»ºÎ(Inner) ÀԷ¿¡ À妽º°¡ ÀÖÀ¸¸é Á¶È¸¸¦ ÈξÀ È¿°úÀûÀ¸·Î ½ÇÇàÇÒ ¼ö ÀÖ½À´Ï´Ù. À妽º°¡ ÀÖ´Â Áßø ·çÇÁ Á¶ÀÎ(Nested Loop Join)Àº ºÐ¸íÈ÷ À妽º°¡ ¾ø´Â Áßø ·çÇÁ Á¶ÀÎ(Nested Loop Join)º¸´Ù ´õ È¿°úÀûÀÔ´Ï´Ù. ¶ÇÇÑ Å×À̺íÀÌ ÀÏ´ëÀÏ °ü°è¿¡ ÀÖ´Â °æ¿ì ³»ºÎ(Inner) Å×À̺íÀ» ½ºÄµÇÏ´Ù°¡ ¿ÜºÎ(Outer) Å×À̺íÀÇ Çà°ú ÀÏÄ¡ÇÏ´Â ÇàÀ» ãÀ¸¸é ½ºÄµ ÀÛ¾÷À» Á¾·áÇÕ´Ï´Ù.
    ºÎµ¿ Á¶°ÇÀÇ Á¶ÀÎÀ» Æ÷ÇÔÇÏ´Â ÀÌ·¯ÇÑ ¹æ¹ýÀ» »ç¿ëÇÏ¿© ¸ðµç Äõ¸®¸¦ ó¸®ÇÒ ¼ö ÀÖ½À´Ï´Ù. (MS³»¿ë http://support.microsoft.com/kb/q197297/)
  3. - Á¶ÀεǴ Å×À̺íµéÀÇ Á¶ÀÎ Ä÷³Áß ¾î´À ÇÑÂÊ Å×ÀÌºí¿¡¸¸ À妽º°¡ Á¸ÀçÇÒ ¶§
    - »ç¿ë ¹æ¹ý : ÀûÀº Å×À̺í inner loop join ¸¹Àº Å×À̺í (Å×ÀÌºí ¼ø¼­¸¦ ¹Ù²Ù¸é ¼º´ÉÀÌ ÀúÇϵÊ)
    - select * from sales st inner loop join stores sa on st.stor_id = sa.stor_id
      select * from stores st inner loop join sales sa on st.stor_id = sa.stor_id
  4. - Hint¸¦ »ç¿ëÇÏÁö ¾ÊÀ¸¸é ¿ÉƼ¸¶ÀÌÁ®°¡ Å×ÀÌºí ¼ø¼­¸¦ °áÁ¤ÇÔ

  5. Çؽà Á¶ÀÎ(Hash Join)
    - Á¶ÀÎÀ» Çϱ⿡ ÀûÇÕÇÑ À妽º°¡ Á¸ÀçÇÏÁö ¾ÊÀ» ¶§
    1. Çؽà ÀÏÄ¡¿¡¼­´Â ¹Ýº¹ÀûÀÎ ÀÓÀÇ ÃßÃâ ÇÔ¼ö¸¦ »ç¿ëÇÏ¿© ÀÔ·Â ÁßÀÇ Çϳª¿¡ ´ëÇØ Build Input ¸Þ¸ð¸®¿¡ Çؽà Å×À̺íÀ» ÀÛ¼ºÇÕ´Ï´Ù. ±×¸®°í ÀÌ Å×ÀÌºí¿¡ ´Ù¸¥ ÀÔ·Â(Probe Input)°ú ÀÏÄ¡µÇ´Â °ªÀÌ ÀÖ´ÂÁö °Ë»öÇÕ´Ï´Ù. Çؽà Å×À̺íÀº À妽º¿Í °°Àº ±â´ÉÀ» ÇÕ´Ï´Ù. Build InputÀÇ µ¥ÀÌÅÍ´Â ¸Þ¸ð¸®¿¡ ÀúÀåµË´Ï´Ù. ÀÌ ¶§ Build InputÀÇ Å©±â°¡ ¸Þ¸ð¸®¿¡ ¸ÂÁö ¾Ê´Â °æ¿ì ¸Þ¸ð¸®¿¡ ¸ÂÀ» ¶§±îÁö ¹Ýº¹ÀûÀ¸·Î ºÐÇҵ˴ϴÙ. ±×¸®°í ³ª¼­ Probe InputÀ» ÇؽÃÇÏ¿© ÀÏÄ¡ÇÏ´Â °ÍÀÌ ÀÖ´ÂÁö °Ë»öÇÕ´Ï´Ù. Áßø ·çÇÁ¿Í´Â ´Þ¸® À妽ºÀÇ À¯¹«°¡ ±×·¸°Ô Áß¿äÇÑ °ÍÀº ¾Æ´Õ´Ï´Ù. Áßø ·çÇÁ¿Í ºñ±³ÇßÀ» ¶§ Çؽà Á¶ÀÎÀº CPU¸¦ ¸¹ÀÌ »ç¿ëÇÏ¸ç »ç¿ë °¡´ÉÇÑ ¸Þ¸ð¸® °ø°£ÀÇ ¿µÇâÀ» ¹Þ½À´Ï´Ù. Çؽà Á¶ÀÎÀº Á¶ÀÎÇÒ Å×À̺íÀÇ Å©±â°¡ ¸¹ÀÌ Â÷À̳ª´Â °æ¿ì ´õ È¿°úÀûÀ¸·Î ÀÛ¿ëÇÕ´Ï´Ù.
    2. Çؽà Á¶Àο¡¼­ Build InputÀº ¹Ýº¹ Ƚ¼ö¸¦ °áÁ¤ÇÏ°Ô µÇ´Âµ¥, ÀÌ´Â ÀÔ·ÂÀÌ ¸Þ¸ð¸® Å©±â¿¡ ¸Â°Ô µÇ¸é ºÐÇÒÀ» ¸ØÃ߱⠶§¹®ÀÔ´Ï´Ù. ±×·ìÈ­ Ư¼ºÀÌ Á¶ÀΠƯ¼º°ú ÀÏÄ¡ÇÏ´Â °æ¿ì ´ÜÀÏ Çؽà Á¶ÀÎÀº ±×·ìÈ­¿Í Á¶ÀÎÀ» µ¿½Ã¿¡ ¼öÇàÇÒ ¼ö ÀÖ½À´Ï´Ù. ÀÌ Á¶ÀÎÀÇ °á°ú¿¡´Â ¾î¶² ƯÁ¤ ¼ø¼­°¡ ÀÖ´Â °ÍÀÌ ¾Æ´Õ´Ï´Ù. ÀÌ·¯ÇÑ À¯ÇüÀÇ Á¶ÀÎÀº ºÎµ¿ Á¶°ÇÀ» ¸¸Á·½Ãų ¼ö´Â ¾ø½À´Ï´Ù.
  6. Á¤·Ä º´ÇÕ Á¶ÀÎ(Sort-Merge Join)
    - Á¤·Ä º´ÇÕ(Sort-Merge)¿¡¼­´Â ´Ù·®ÀÇ ÀÔ·ÂÀ» Á¤·ÄÇϸé ÃÑ ºñ¿ëÀÌ ¸¹ÀÌ µì´Ï´Ù. º´ÇÕ(Merge) Á¶Àο¡¼­´Â Á¶ÀÎ ¿­·Î ÀÔ·ÂÀ» Á¤·ÄÇÏ¿© Á¤·ÄÇÑ ½ÖÀ» Çϳª·Î º´ÇÕ(Merge)Çϴµ¥, ÀÌ °úÁ¤¿¡¼­ Á¤·ÄÇÑ °á°ú ÁýÇÕ°ú ÀÏÄ¡ÇÏÁö ¾Ê´Â ¿­(Column) °ªÀº ¾ø¾Ö ¹ö¸³´Ï´Ù.

    ÀÌ ¾Ë°í¸®ÁòÀº ¸ÕÀú ÇÑ ÀÔ·ÂÀ» °Ë»çÇÏ°í ³ª¼­ Å©°Å³ª °°Àº Á¶ÀÎ °ªÀ» °¡Áø ÇàÀ» ãÀ» ¶§±îÁö µÎ ¹ø° Á¤·ÄÇÑ ÀÔ·ÂÀ» ½ºÄµÇÕ´Ï´Ù. R1ÀÇ Æ©ÇÃÀ» R2¿¡ ÀÖ´Â ¸ðµç Æ©Çðú ¦À» Áö¾î Á¶ÀΰªÀ» ÀÏÄ¡½Ãŵ´Ï´Ù. R1¿¡ ÀÖ´Â ¸ðµç Æ©Çÿ¡ ´ëÇؼ­µµ ÀÌ °úÁ¤À» ¹Ýº¹ÇÕ´Ï´Ù.

    º´ÇÕ(Merge) Á¶ÀÎÀº µÑ Áß¿¡¼­ ´õ ÀÛÀº ÀԷ¸¸ ¸Þ¸ð¸®¿¡ µÎ´Â Çؽà Á¶Àΰú´Â ¹Ý´ë·Î µÎ °³ÀÇ ÀÔ·ÂÀÌ ¸ðµÎ ¸Þ¸ð¸®¿¡ ÀÖ¾î¾ß ÇÕ´Ï´Ù. º´ÇÕ(Merge) Á¶ÀÎÀº ÀÔ·ÂÀÌ ÀÌ¹Ì Á¤·ÄµÇ¾î ÀÖ´Â °æ¿ì ÈξÀ ´õ È¿°úÀûÀÔ´Ï´Ù. ¶ÇÇÑ ÀÌ Á¶ÀÎÀÇ °á°ú´Â Á¶ÀΠƯ¼º¿¡¼­ Á¤·ÄµË´Ï´Ù. ÀÌ·¯ÇÑ À¯ÇüÀÇ Á¶ÀÎÀº ºÎµ¿ Á¶°ÇÀ» ¸¸Á·½Ãų ¼ö´Â ¾ø½À´Ï´Ù.