[Áöµð³ÝÄÚ¸®¾Æ]Áö±Ý±îÁö ¿ì¸®´Â µ¥ÀÌÅͺ£À̽º ¼º´É°ü¸®¿¡ ´ëÇÏ¿© ±âÁ¸°ú´Â ´Ù¸¥ ¡®È°¿ë¡¯ÀûÀÎ ¸é¿¡ ÃÊÁ¡À» ¸ÂÃç °³·«ÀûÀ¸·Î ¾Ë¾Æº¸¾Ò´Ù.
À̹ø ½Ã°£Àº ´Ü¼øÇÑ ÆíÇùÇÑ Áö½Ä¸¸À¸·Î ÇØ°áµÇ´Â ¹®Á¦°¡ ¾Æ´Ñ µ¥ÀÌÅͺ£À̽º ¼º´É¿¡ °üÇØ¼ ÇÊÀÚ°¡ ÇöÀå¿¡¼ ÄÁ¼³ÆÃÇß´ø ½ÇÀü »ç·ÊµéÀ» Áß½ÉÀ¸·Î µ¥ÀÌÅͺ£À̽º ±â¹ÝÀÇ ÇÁ·Î±×·¡¹Ö »ç·ÊµéÀ» ¼Ò°³ÇÑ´Ù.
½ÇÁ¦ ÇöÀå¿¡¼ »ç¿ëµÇ´Â ÇÁ·Î±×·¥Àº Å©°Ô ¿Â¶óÀÎ À¯Çü°ú ¹èÄ¡¼ºÀÇ À¯ÇüÀ¸·Î ³ª´²Áö°Ô µÈ´Ù. À̰ÍÀº ¸ðµç ÇÁ·Î±×·¥ÀÇ À¯ÇüÀ» ´ëÇ¥ÇÑ´Ù°í Çϱ⠺¸´Ù´Â ½ÇÁ¦ end user(»ç¿ëÀÚ)µéÀÌ »ç¿ëÇÏ°Ô µÇ´Â À¯ÇüÀ¸·Î °³¹ßÀÚµéÀÌ ÇÁ·Î±×·¡¹ÖÀ» ÇÏ´Â À¯ÇüÀ̶ó°í º¼ ¼ö ÀÖ´Ù.
ÀÌ·¸°Ô À¯ÇüÀ» ³ª´©´Â ÀÌÀ¯´Â ÀÌ À¯Çü¿¡ µû¶ó ÇÁ·Î±×·¡¹ÖÀ» ÇÏ´Â ¹æ¹ý°ú Àü·«ÀÌ ´Þ¶ó¾ß Çϱ⠶§¹®ÀÌ´Ù. ½ÇÁ¦·Î ÇöÀå¿¡¼ ¸¹Àº ¼º´É ¹®Á¦¸¦ ÀÏÀ¸Å°´Â ÀÌÀ¯´Â ÀÌ µÎ °¡ÁöÀÇ ´Ü¼øÇÑ(?) À¯ÇüÀÇ ±¸ºÐ ¾øÀÌ ÇÁ·Î±×·¡¹ÖÀ» ÇÏ´Â ÀÌÀ¯°¡ ±²ÀåÈ÷ ¸¹´Ù.
 |
| <±×¸² 1> ¿Â¶óÀÎ À¯Çü°ú ÇÁ·Î±×·¡¹Ö ¹æ¾È |
<±×¸² 1>¿¡¼ º¸µíÀÌ ¿Â¶óÀÎÀÇ ÇÁ·Î±×·¡¹ÖÀº ¾÷¹« ºÐ¼®ÀÌ ¼±ÇàµÇ¾îÁø »óÅ¿¡¼ ÇÁ·Î±×·¡¹Ö ±â¼úÀûÀÎ ºÎºÐ¿¡ µé¾î°¥ ¶§ ¿©·¯ °¡Áö ÆÑÅÍ(factor)µéÀ» °í·ÁÇØ¼ Àü·«À» Â¥¾ß ÇÑ´Ù. °í·ÁÇØ¾ß ÇÒ ÆÑÅ͵éÀº ´ÙÀ½°ú °°´Ù.
¡ß Real Time Data¸¦ Á¶È¸Çؾ߸¸ Çϴ°¡?
¡ß °Ë»öÁ¶°ÇÀÇ Á¶ÇÕ¿¡ µû¸¥ ´Ù¾ç¼º°ú µ¥ÀÌÅÍ·®Àº ¾ó¸¶³ª µÇ´Â°¡?
¡ß ¹èÄ¡¸¦ ÀÌ¿ëÇÒ ¼ö´Â ¾ø´Â°¡?
¡ß °á°ú °Ç¼ö°¡ Àû´çÇѰ¡?
¡ß Á¤·ÄÀÇ ±âÁØÀº ¹«¾ùÀΰ¡?
ÀÌ¿Í °°Àº ÆÑÅ͵鿡 ´ëÇØ ´äÀ» ¾ò¾ú´Ù¸é ´ÙÀ½°ú °°Àº ¼ø¼µµ¿¡ ÀÇÇØ È¸é ±¸¼º°ú ÇÁ·Î±×·¡¹Ö Àü·«À» Â¥¾ß ÇÑ´Ù. À̰ÍÀº µ¥ÀÌÅͺ£À̽º¸¦ ±â¹ÝÀ¸·Î ÇÏ´Â ÇÁ·Î±×·¡¹ÖÀ» Çϱâ À§ÇÔÀ̸ç, ÀÌ·± ÀýÂ÷¸¦ Á¦´ë·Î ¹âÀº ÇÁ·Î±×·¥Àº ¼º´É »ó ÀüÇô ¹®Á¦¸¦ ÀÏÀ¸Å°Áö ¾Ê°í ÇâÈÄ µ¥ÀÌÅͰ¡ ¸¹ÀÌ ½×ÀÌ´õ¶óµµ ½Ã½ºÅÛÀÇ Àç°³¹ßÀÌ ÇÊ¿ä¾ø°Ô µÈ´Ù. µû¶ó¼ »ç¿ëÀÚµéÀÇ ¸¸Á·µµ ¶ÇÇÑ ÃæÁ·½Ãų ¼ö ÀÖ°Ô µÈ´Ù.
 |
| <±×¸² 2> ÃÖÀûÀÇ ÇÁ·Î±×·¡¹Ö ¹æ¾È |
ȸéÀÌ º¹ÀâÇØÁú¼ö·Ï ÇÁ·Î±×·¡¹ÖÇϱⰡ ¾î·Á¿öÁö°í SQLÀÌ ¾î·Æ°Ô µÇ¹Ç·Î ´ç¿¬È÷ ¼º´ÉÀÌ ÀúÇϵDZ⠸¶·ÃÀÌÁö¸¸ <±×¸² 2>¿Í °°Àº ¼ø¼¿¡ ÀÔ°¢ÇÏ¿© Á¤¸®ÇÏ´Ù º¸¸é º¹ÀâÇÑ ÇÁ·Î±×·¥ÀÌ¶óµµ ÇÁ·Î±×·¡¹ÖÀ» ´Ü¼øÇÏ°Ô Â© ¼ö ÀÖ´Â ´É·ÂÀÌ ±æ·¯Áö°Ô µÈ´Ù. ¿Â¶óÀÎ ÇÁ·Î±×·¥Àº ´ë°Ô µ¥ÀÌÅͺ£À̽ºÀÇ Á¶Àιæ½Ä Áß Nested Loops Á¶ÀÎÀ¸·Î Ç®¸®°Ô Â¥°Ô µÇ´Âµ¥ À̰ÍÀÌ Àü·«À» ±¸¼ºÇϴµ¥ Çٽɿä¼Ò°¡ µÈ´Ù. Nested Loops Á¶ÀÎÀ̶õ Á¶Àιæ½Ä Áß °¡Àå ÀüÅëÀûÀÌ°í ±âº»ÀûÀÎ ¹æ½ÄÀ¸·Î ¿Â¶óÀÎ ÇÁ·Î±×·¡¹ÖÀ» ÇÒ ¶§ ¹Ýµå½Ã È®ÀÎÇØ¾ß ÇÒ ¹æ½ÄÀÌ´Ù.
À̹ø ¿¬Àç¿¡¼´Â Áö¸é °ü°è»ó µ¥ÀÌÅͺ£À̽ºÀÇ Á¶ÀÎ ¹æ½Ä¿¡ ´ëÇÏ¿© ÀÚ¼¼È÷ ´Ù·çÁö´Â ¾Ê°í °ü·Ã ÀڷḦ ã¾Æº¸°Å³ª ±âȸ°¡ µÇ¸é ÀÚ¼¼È÷ ±â¼úÇÏ´Â ½Ã°£À» °¡Á®º¸µµ·Ï ÇϰڴÙ.
Nested Loops Á¶ÀÎ ¹æ½ÄÀÇ °¡Àå ÇÙ½ÉÀº µå¶óÀ̺ù ÆÑÅ͸¦ Àü·«ÀûÀ¸·Î ºÎ¿©ÇØ¾ß ÇÏ´Â °ÍÀÌ ÇÙ½ÉÀÌ´Ù. Áï, À妽º¿Í Random Access·Î Ç®¸®°Ô µÇ´Â ¹æ½ÄÀÎ ¸¸Å µå¶óÀ̺ù ÆÑÅÍÀÇ °Ç¼ö°¡ ÀûÀ»¼ö·Ï ¼º´É »ó¿¡ ¹®Á¦¸¦ ÀÏÀ¸Å°Áö ¾Ê´Â´Ù. µû¶ó¼ ȸéÀ» ±¸¼ºÇÒ ¶§ ´ÜÀÏ Á¶°Ç ¶Ç´Â Á¶°ÇÀÇ Á¶ÇÕÀÌ µå¶óÀ̺ù ÆÑÅÍÀÇ °Ç¼ö¸¦ Àû°Ô Çϱâ À§ÇÑ Àü·«À» ±¸»çÇÏ¸é µÇ´Â °ÍÀÌ´Ù. ¸¸¾à ±×·¸°Ô ºÒ°¡´ÉÇÏ´Ù¸é ºÎºÐ¹üÀ§Ã³¸®³ª ¹èÄ¡¿¡ ÀÇÇÑ ¹æ½ÄÀ¸·Î Àü·«À» º¯°æÇØ¾ß ¼º´É »ó¿¡ ¹®Á¦°¡ µÇÁö ¾Ê´Â´Ù. ½ÇÁ¦ ¿©·¯ °¡Áö »ç·ÊµéÀ» ÅëÇØ¼ µ¥ÀÌÅͺ£À̽º ±â¹ÝÀÇ ÇÁ·Î±×·¡¹Ö ¹æ¹ý¿¡ ´ëÇØ ±¸Ã¼ÀûÀ¸·Î ¾Ë¾Æº»´Ù.
¿¹ 1. È¿À²ÀûÀÎ À妽º¸¦ ÀÌ¿ëÇÏÁö ¸øÇϰí ÀÖ´Â ÇÁ·Î±×·¥
 |
| <ȸé 1> ȸ¿øÁ¶È¸ ÇÁ·Î±×·¥ |
<ȸé 1>Àº ¾î´À ¡®ºÀ»çÀÚ¡¯¶ó´Â ȸ¿øÀ» Á¶È¸Çϴ ȸéÀ¸·Î Á¶È¸ Á¶°Ç¿¡ µû¶ó ¾î¶»°Ô SQLÀ» ±¸»çÇÏ´Â Áö¸¦ ¾Ë¾Æº¸°íÀÚ ÇÑ´Ù. °£´ÜÇÏ°Ô ¿ä¾àÇØ º¸¸é ´ÙÀ½°ú °°´Ù.
* ¡®ÁֹιøÈ£¡¯·Î Á¶È¸Çϰųª ¡®À̸§¡¯À¸·Î Á¶È¸°¡ °¡´ÉÇÏ´Ù.
* ¡®ÁֹιøÈ£¡¯³ª ¡®À̸§¡¯ÀÌ ¡®=¡¯ Á¶°ÇÀ¸·Î µå¶óÀ̺ù ÆÑÅͰ¡ µÉ ¼ö ÀÖµµ·Ï ÇÑ´Ù. ¿¹) union all·Î ½ÇÇà°èȹ ºÐ¸®
* ¡®µå¶óÀ̺ù ÆÑÅÍ¡¯ÀÇ ¿ªÇÒÀ» ÇÒ ¼ö ÀÖµµ·Ï À妽º Àü·«À» ¼¼¿î´Ù.
* ¡®À̸§¡¯ÀÇ °æ¿ì À¯»çÇÑ À̸§ÀÇ µ¥ÀÌÅͰ¡ ¸¹ÀºÁö È®ÀÎÇÏ¿© ÃÖ¼ÒÀÚ¸®¸¦ ¼³Á¤ÇÏ¿© ÆË¾÷(pop-up)À» ÀÌ¿ëÇÏ¿© ¡®=¡¯·Î µå¶óÀ̺ù µÉ ¼ö ÀÖµµ·Ï À¯µµÇÑ´Ù.
¡®ºÀ»çÀÚ¡¯ ±âº» Á¤º¸¸¦ Á¶È¸Çϴ ȸéÀε¥ ±× Á¶°ÇÀ¸·Î Áֹεî·Ï¹øÈ£³ª ºÀ»çÀÚÀÇ À̸§ÀÌ µé¾î¿Ã ¼ö ÀÖ´Ù. ÇØ´ç Å×À̺íÀÇ À妽º »óȲ¿¡ µû¶ó ÇÑ ¸íÀÇ ºÀ»çÀÚ¸¦ °Ë»öÇϱâ À§ÇÏ¿© Full ScanÀ» ÇÒ ¼ö ÀÖ´Â ºÎºÐÀÌ´Ù. µû¶ó¼ ÀÌ ºÎºÐÀ» ¡®À̸§¡¯À̳ª ¡®ÁֹιøÈ£¡¯°¡ Á¶°ÇÀÌ µé¾î¿Ã °æ¿ì·Î ³ª´©¾î SQLÀ» ±¸¼ºÇÏ¿© À妽º¸¦ ÀÌ¿ëÇÒ ¼ö ÀÖµµ·Ï Access Path¸¦ °íÁ¤ÇÔÀ¸·Î½á È¿°úÀûÀÎ À妽º Access¸¦ ÇÒ ¼ö ÀÖµµ·Ï À¯µµÇÑ´Ù.
±âÁ¸ ÇÁ·Î±×·¥
SELECT /*+ ordered use_nl(b c bg) index(B BONGSAJA_IDX3) */
b.bm_no,bm_regdate,bm_name,bm_jumin,bm_sex,cent_name,
bm_addr1,bm_addr2,bm_tel,bm_mtel,bg_name
FROM bongsaja b, center c,bong_group bg
WHERE b.cent_code = c.cent_code
AND b.bg_no = bg.bg_no (+)
AND B.cent_sigun in (select cent_sigu
from center
where cent_code like decode(:sw, 1, '%', 2, substr(:cent_code,1,5)||'%'))
AND (B.BM_NAME like :name||'%' or B.BM_JUMIN like :jumin||'%')
Tuned-SQL
1) ºÀ»çÀÚ À̸§ÀÌ µé¾î¿Ã °æ¿ì
SELECT /*+ ordered use_nl(b c bg) index(B BONGSAJA_IDX3) */
b.bm_no,bm_regdate,bm_name,bm_jumin,bm_sex,cent_name,
bm_addr1,bm_addr2,bm_tel,bm_mtel,bg_name
FROM bongsaja b, center c,bong_group bg
WHERE b.cent_code = c.cent_code
AND b.bg_no = bg.bg_no (+)
AND B.cent_sigun in (select cent_sigu
from center
where cent_code like decode(:sw, 1, '%', 2, substr(:cent_code,1,5)||'%'))
AND B.BM_NAME like :name||'%'
¡¡
2) ºÀ»çÀÚÀÇ ÁֹιøÈ£°¡ µé¾î¿Ã °æ¿ì
SELECT /*+ ordered use_nl(b c bg) index(B BONGSAJA_IDX4) */
b.bm_no,bm_regdate,bm_name,bm_jumin,bm_sex,cent_name,
bm_addr1,bm_addr2,bm_tel,bm_mtel,bg_name
FROM bongsaja b, center c,bong_group bg
WHERE b.cent_code = c.cent_code
AND b.bg_no = bg.bg_no (+)
AND B.cent_sigun in (select cent_sigun
from center
where cent_code like decode(:sw, 1, '%', 2, substr(:cent_code,1,5)||'%'))
AND B.BM_JUMIN = :jumin
±âÁ¸¿¡´Â ÀÌ °Ë»öÁ¶°Ç¸¸À» À§ÇØ bm_name, bm_juminÀÇ ´ÜÀÏ À妽º°¡ ¸¸µé¾îÁ® ÀÖ¾úÀ¸³ª ÀÌ Äõ¸®´Â ³»ºÎÀûÀ¸·Î cent_sigunÀ̶ó´Â »ó´çÈ÷ º¯º°·Â ÀÖ´Â Á¶°ÇÀÌ Ç×»ó °°ÀÌ µé¾î¿À°Ô µÇ¹Ç·Î ´ÜÀÏ À妽º¸¦ dropÇϰí ÇöÀç´Â cent_code+bm_jumin, cent_code+bm_name µîÀÇ °áÇÕ À妽º¸¦ ¸¸µé¾ú°í ÀÌ À妽º¸¦ ¾²±â À§Çؼ ÀÌ¿Í °°ÀÌ SQLÀ» ºÐ¸®Çϰí ÈùÆ®¸¦ ÀÌ¿ëÇÏ¿© À妽º¸¦ ¾µ ¼ö ÀÖµµ·Ï À¯µµÇß´Ù.
¹°·Ð ÁֹιøÈ£ 13ÀÚ¸®°¡ ÀüºÎ Á¶°Ç¿¡ µé¾î¿À°í bm_juminÀ̶ó´Â À妽º¸¦ ÀÌ¿ëÇÏ°Ô µÇ¸é ¼º´É¿¡´Â ¹®Á¦°¡ ¾ø°ÚÁö¸¸ ±âÁ¸¿¡´Â ÁֹιøÈ£¿Í À̸§ÀÇ ÀÚ¸® ¼ö Á¦¾àÀÌ ÀüÇô ¾ø¾ú°í À̸§À¸·Î¸¸ Á¶È¸ÇÏ´Â °æ¿ì °°Àº ¼ºÀ» °¡Áø ȸ¿ø(±èXX )ÀÌ ¼ö¾øÀÌ ¸¹±â ¶§¹®¿¡ ȸ鿡 »Ñ¸®´Â µ¥ ¾î·Á¿òÀÌ ¸¹¾ÒÁö¸¸ cent_sigunÀ̶ó´Â º¯º°·ÂÀÌ ÁÁÀº Á¶°ÇÀ» ÇÔ²² °áÇÕÀ妽º¸¦ ÀÌ¿ëÇÏ¿© Çʼö Á¶°ÇÈÇ߱⠶§¹®¿¡ ÀüÇô ¹®Á¦°¡ µÇÁö ¾Ê¾Ò´Ù.
¿¹ 2. ´Ù¾çÇÑ °Ë»öÁ¶°Ç°ú ¸¹Àº ¾çÀÇ °á°ú ¼ö¸¦ »Ñ¸± °æ¿ì
 |
| <ȸé 2> °í°´Á¤º¸ Á¶È¸ ÇÁ·Î±×·¥ |
ÀÌ ÇÁ·Î±×·¥Àº ¾î´À ÀüÀÚȸ»çÀÇ »óǰÆÇ¸Å °í°´À» °ü¸®ÇÏ´Â ÇÁ·Î±×·¥À¸·Î ¼ÒÀ§ Äݼ¾ÅÍ¿¡¼ ÁÖ·Î ÀÌ¿ëÇÏ´Â ÇÁ·Î±×·¥ÀÌ´Ù. Áï °í°´ÀÇ ÀüȰ¡ ¿Ã °æ¿ì °í°´À» ÀÀ´ëÇϱâ À§ÇØ °í°´ Á¤º¸¸¦ Á¶È¸ÇÏ´Â ÇÁ·Î±×·¥ÀÌ´Ù. °í°´ Á¤º¸¸¦ ¿©·¯ °¡Áö·Î ÀÔ·ÂÇÒ ¼ö ÀÖ°Ô ÇÏ¿© ´Ù¾çÇÏ°Ô Á¶È¸¸¦ ÇÒ ¼ö ÀÖµµ·Ï ÇÁ·Î±×·¡¹ÖµÈ ¿Â¶óÀΠȸéÀÌ´Ù. ÀÌ È¸éÀ» ºÐ¼®ÇÑ °á°ú´Â ´ÙÀ½°ú °°´Ù.
* ¡®´Ù¾çÇÑ °Ë»öÁ¶°Ç¡¯ Áß Àǹ̰¡ °ãÄ¡Áö ¾Ê´ÂÁö È®ÀÎ ¿¹) ¡®ÁֹιøÈ£¡¯¿Í ¡®°í°´¸í+ÁֹιøÈ£¡¯´Â Àǹ̻ó °ãħ
* ¡®ID¡¯¼ºÀÇ ÁֹιøÈ£³ª Ä«µå¹øÈ£´Â Á¶°ÇÀ¸·Î Àû´ç(µå¶óÀ̺ù ÆÑÅÍ, °á°ú°Ç¼ö)
* ¡®°í°´¸í+ÈÞ´ëÆù¡¯, ¡®°í°´¸í+ÀÚÅùøÈ£¡¯´Â µ¥ÀÌÅÍ·®À» º¸°í ÆÇ´ÜÇÏ¿© ÃÖ¼Ò ÀÚ¸® ¼ö¸¦ Á¤ÇÑ´Ù.
* ¡®°á°ú°Ç¼ö¡¯°¡ ¸¹À» °æ¿ì ºÎºÐ¹üÀ§Ã³¸®·Î À¯µµÇÑ´Ù.
* ¾÷¹«»óÀ¸·Î ¸¹Àº °á°ú Row¸¦ »Ñ¸± °ÍÀÎÁö ÆÇ´ÜÇÑ´Ù.
±âÁ¸ ÇÁ·Î±×·¥
If (sa_Help[0][0].equals(¡°1¡±))
{
tempIndex = ¡° /*+ INDEX( RM501M RM501M_IDX02) */ ¡±;
}
String v_Sql = ¡° select ¡± + tempIndex + ¡° rownum numb,
fn_Hicardno(cust_id) cardno, cust_id, cust_nm,¡±
v_Sql +=¡±decode(rsno, ¡®XXXXXXXXXXXXX¡¯, ¡®¡¯,rsno) rsno, tel_no, cell_tel_no, ¡±;
v_Sql +=¡±loc_id1, fnHILocID_FULL(loc_id1) loc_nm, addr1¡±;
v_Sql +=¡±from rm501m ¡±;
if (sa_Help[0][0].equals(¡°0¡±)))
{
v_Temp +=¡± where cust_nm like ¡®¡± +
sa_Help[1][0] + ¡°¡¯||¡¯%¡¯ ¡°;
v_Temp +=¡± and replace (replace (cell_tel_no,¡¯-¡®,¡¯¡¯),¡¯ ¡®, ¡®¡¯)
like ¡®¡± + sa_Help[1][1]
}
else if (sa_Help[0][0].equals(¡°1¡±))
{
v_Temp +=¡± where cust_nm like ¡®¡± +
sa_Help[2][0] + ¡°¡¯||¡¯%¡¯ ¡°;
v_Temp +=¡± and replace (replace (cell_tel_no,¡¯-¡®,¡¯¡¯),¡¯ ¡®, ¡®¡¯)
like ¡®¡± + sa_Help[2][1]
}
else if (sa_Help[0][0].equals(¡°2¡±)))
{
v_Sql =¡° select /*+ ordered INDEX(RM501M_IDX01) */
rownum numb, fn_Hicardno(cust_id) cardno, ¡°
v_Sql +=¡±decode(rsno, ¡®XXXXXXXXXXXXX¡¯, ¡®¡¯,rsno) rsno,
tel_no, cell_tel_no, ¡±;
v_Sql +=¡±loc_id1, fnHILocID_FULL(loc_id1) loc_nm, addr1¡±;
v_Sql +=¡±from rm501m ¡±;
v_Temp +=¡±where rsno like ¡®¡± + sa_Help[3][0] + ¡°¡¯||¡¯%¡¯¡±;
}
else if (sa_Help[0][0].equals(¡°3¡±)))
{
v_Temp +=¡±where cust_nm like ¡®¡± + sa_Help[4][0] + ¡°¡¯||¡¯%¡¯ ¡°;
v_Temp +=¡±and rsno like ¡®¡° + sa_Help[4][1] + ¡°¡¯||¡¯%¡¯ ¡°;
}
¹®Á¦Á¡ ¹× ¿øÀÎ
ÀÌ ÇÁ·Î±×·¥Àº °í°´À» Á¶È¸Çϴ ȸéÀ¸·Î Äݼ¾ÅÍ ¾÷¹«ÀÇ Intro ¾÷¹«ÀÌ´Ù. Á¶È¸Á¶°ÇÀÌ ´Ù¾çÇѵ¥ ¡®Áֹεî·Ï¹øÈ£¡¯¿Í ¡®Ä«µå¹øÈ£¡¯°¡ ÀÔ·ÂµÉ °æ¿ì´Â °á°ú SetÀÌ ¸¹Áö ¾ÊÀ» °ÍÀÌÁö¸¸ ´ëºÎºÐ ¾÷¹«¿¡¼ Á¶È¸ÇÒ °ÍÀ¸·Î ¿¹»óÇÏ´Â ¡®°í°´¸í+ÈÞ´ëÆù¡¯À̳ª ¡®°í°´¸í+ÀÚÅÃÀüȹøÈ£¡¯ °°Àº °æ¿ì´Â Á¶°Ç °ª¿¡ µû¶ó¼ ¸¹Àº ¾çÀÇ °á°ú SetÀÌ ³ª¿Ã °ÍÀ¸·Î ¿¹»óÀÌ µÈ´Ù.
3-Ƽ¾î ±¸Á¶¿¡¼´Â Á¶°Ç °ª¿¡ ¸Â´Â Äõ¸®°¡ ³¡³ªÁö ¾ÊÀ¸¸é °á°ú·Î ³ªÅ¸³ªÁö ¾Ê°í ¶ÇÇÑ °á°ú SetÀÌ ¸¹À¸¸é ±× °á°ú SetÀ» ³×Æ®¿öÅ©·Î ²ø¾î¿À°Å³ª ȸ鿡 »Ñ¸± ¶§ »ó´çÇÑ ½Ã°£ÀÌ ¼Ò¿äµÇ¹Ç·Î ¾÷¹«¿¡ ´ë´ÜÇÑ ÁöÀåÀ» ÃÊ·¡ÇÒ °¡´É¼ºÀÌ ÀÖ´Ù.
°á°ú SetÀÌ ¸¹À» °æ¿ì¿¡ ù ÆäÀÌÁöÀÇ °æ¿ì´Â »¡¸® ¶ã ¼ö ÀÖÀ¸³ª ¡®NEXT¡¯¸¦ ´©¸£¸é ´©¸¦¼ö·Ï ¼Óµµ ÀúÇϰ¡ ÀϾ°Ô µÇ´Â °ÍÀÌ´Ù. ±âÁ¸¿¡ µÇ¾î ÀÖ´ø ÇÁ·Î±×·¥ ¹æ½ÄÀº ÈçÈ÷ À¥ ÇÁ·Î±×·¥¿¡¼ ¸¹ÀÌ º¼ ¼ö ÀÖ´Â °ÍÀε¥ Á¶°Ç¿¡ µû¶ó SQLÀ» Á¶ÇÕÇØ¼ ¸¸µå´Â (if¡¦ else if¿¡ ÀÇÇØ SQLÀ» Á¶ÇÕ) Á¶ÇÕÇü SQLÀ» ±¸»çÇϰí ÀÖ´Ù. ÀÌ´Â µ¥ÀÌÅͺ£À̽º°¡ À¯ÀÏÇÏ°Ô ÀÌÇØÇÒ ¼ö ÀÖ´Â SQL°ú ÀÏ¹Ý ·ÎÁ÷ ºÎºÐÀ» È¥¿ëÇØ¼ ÀÌ¿ëÇϰí ÀÖ´Â °ÍÀÌ´Ù.
ÀÌ·¸°Ô µÇ¸é µ¥ÀÌÅͺ£À̽º´Â Á¶°Ç¿¡ µû¶ó ´Ù¾çÇÑ SQLÀ» ¹Þ¾ÆµéÀÌ°Ô µÇ°í ÀüüÀûÀ¸·Î Access Path°¡ ÃÖÀûȵÇÁö ¸øÇÏ¿© Á¶°Ç¿¡ µû¶ó ¼º´É Â÷À̰¡ ½ÉÇØÁö°Ô µÈ´Ù. ¶ÇÇÑ °á°ú °Ç¼ö¿¡ µû¸¥ ºÎºÐ¹üÀ§ ó¸® ¹æ½ÄÀÇ ÇÁ·Î±×·¡¹Ö ¶ÇÇÑ ºÒ°¡´ÉÇÏ°Ô µÇ¾î µ¥ÀÌÅͺ£À̽º Áß½ÉÀÇ ÇÁ·Î±×·¡¹ÖÀÌ ¾Æ´Ñ ÀýÂ÷ÇüÀÇ ÇÁ·Î±×·¥ÀÌ µÇ´Â °ÍÀÌ´Ù.
°³¼±¹æ¾È
¡®Áֹεî·Ï¹øÈ£¡¯³ª ¡®Ä«µå¹øÈ£¡¯°¡ ÀÔ·ÂµÉ °æ¿ì´Â ÇöÀç ÇÁ·Î±×·¥ ¹æ½ÄÀ¸·Î ÀÌ¿ëÇØµµ º° ¹«¸®°¡ ¾ø¾î º¸ÀÌ°í ¡®°í°´¸í+Áֹεî·Ï¹øÈ£¡¯ÀÇ °æ¿ì´Â ¡®Áֹεî·Ï¹øÈ£¡¯ Á¶°ÇÀ¸·Î ´ëü ÀÌ¿ë °¡´ÉÇϹǷΠũ°Ô ¹®Á¦°¡ µÇÁö ¾ÊÀ» °ÍÀ¸·Î º¸À̳ª ¡®°í°´¸í+ÈÞ´ëÆù¡¯ ¶Ç´Â ¡®°í°´¸í+ÀÚÅÃÀüȹøÈ£¡¯ °°Àº °æ¿ì´Â ´ÙÀ½°ú °°ÀÌ ºÎºÐ¹üÀ§Ã³¸® ¹æ½ÄÀ¸·Î ÇÁ·Î±×·¥À» º¯°æÇØ¾ß ÇÑ´Ù. ¡®°í°´¸í¡¯ÀÌ µé¾î¿Ã ¶§ µ¿¸íÀÌÀÎÀÇ °æ¿ì ÈÞ´ëÆù ¹øÈ£¿Í Rowid °ªÀ» ÀÌ¿ëÇØ¼ ±¸ºÐÇÏ¿© ÆäÀÌ¡À» ÇÑ´Ù.
¡®ºÎºÐ¹üÀ§Ã³¸®¡¯ ¹æ½ÄÀÇ ÇÁ·Î±×·¥À̶õ °³³äÀº °£´ÜÇϳª ±¸Çö¿¡ ÀÖ¾î °íµµÀÇ ±â¼úÀ» ¿äÇÏ´Â °ÍÀ¸·Î À¥ ÆäÀÌ¡ ó¸® ½Ã ÇÊ¿äÇÑ ºÎºÐ¸¸ µ¥ÀÌÅͺ£À̽º¿¡¼ ÀÐ¾î ¿Ã ¼ö ÀÖ°Ô ±¸ÇöÇÏ´Â ¹æ½ÄÀ» ¸»ÇÑ´Ù(Áö¸é °ü°è»ó ¼¼ºÎ ³»¿ëÀº ¸ÞÀÏÀ̳ª ´Ù¸¥ Áö¸éÀ» ÅëÇØ ¼Ò°³Çϵµ·Ï ÇϰڴÙ). ±âÁ¸ ÇÁ·Î±×·¥À» ¡®ºÎºÐ¹üÀ§Ã³¸®¡¯ ¹æ½ÄÀ¸·Î ÇÊÀÚ°¡ ±¸ÇöÇÑ ³»¿ëÀ» ¼Ò°³ÇÑ´Ù.
1) °í°´¸í+ÈÞ´ëÆù
select rnum, row_id, cardno, cust_id, cust_nm, rsno,
tel_no, cell_tel_no, loc_id1, loc_nm, addr1
from ( select /*+ driving_site(a) index(a rm501m_idx04) */
rownum rnum, rowidtochar(rowid) row_id,
(select mbrcard_no
from rm507T b
where b.cls_dt = '99991231'
and b.cust_id = a.cust_id) cardno,
cust_id, cust_nm, decode(rsno,'XXXXXXXXXXXXX','',rsno) rsno,
tel_no, cell_tel_no, loc_id1,
(select full_nm
from cm501c c
where c.loc_id = a.loc_id1) loc_nm, addr1
from rm501m a
where upper(:sw) = 'FIRST'
and a.cust_nm = :cust_nm and a.cell_tel_no like :cell_tell_no1||'%'
and rownum <= 51
)
select rnum, row_id, cardno, cust_id, cust_nm, rsno,
tel_no, cell_tel_no, loc_id1, loc_nm, addr1
from (select /*+ driving_site(a) index(a rm501m_idx04) */
rownum rnum, rowidtochar(rowid) row_id,
(select mbrcard_no from rm507T b
where b.cls_dt = '99991231'
and b.cust_id = a.cust_id) cardno,
cust_id, cust_nm, decode(rsno,'XXXXXXXXXXXXX','',rsno) rsno,
tel_no, cell_tel_no, loc_id1,
(select full_nm
from cm501c c
where c.loc_id = a.loc_id1) loc_nm, addr1
from rm501m a
where upper(:sw) = 'NEXT'
and a.cust_nm = :cust_nm
and (a.cell_tel_no > :cell_tell_no or (a.cell_tel_no =
:cell_tell_no and a.rowid >= chartorowid(:row_id)))
and a.cell_tel_no like :cell_tell_no1||'%'
and rownum <= 51
union all
select /*+ driving_site(a) index_desc (a rm501m_idx04) */
(52 - rownum) rnum, rowidtochar(rowid) row_id,
(select mbrcard_no
from rm507T b
where b.cls_dt = '99991231'
and b.cust_id = a.cust_id) cardno,
cust_id, cust_nm, decode(rsno,'XXXXXXXXXXXXX','',rsno) rsno,
tel_no, cell_tel_no, loc_id1,
(select full_nm
from cm501c c
where c.loc_id = a.loc_id1) loc_nm, addr1
from rm501m a
where upper(:sw) = 'PREV'
and a.cust_nm = :cust_nm
and (a.cell_tel_no < :cell_tell_no or (a.cell_tel_no =
:cell_tell_no and a.rowid <= chartorowid(:row_id)))
and a.cell_tel_no like :cell_tell_no1||'%'
and rownum <= 51
)
order by rnum
2) °í°´¸í+ÀÚÅÃÀüȹøÈ£
select rnum, row_id, cardno, cust_id, cust_nm, rsno,
tel_no, cell_tel_no, loc_id1, loc_nm, addr1
from ( select /*+ driving_site(a) index(a rm501m_idx04) */
rownum rnum, rowidtochar(rowid) row_id,
(select mbrcard_no
from rm507T b
where b.cls_dt = '99991231'
and b.cust_id = a.cust_id) cardno,
cust_id, cust_nm, decode(rsno,'XXXXXXXXXXXXX','',rsno) rsno,
tel_no, cell_tel_no, loc_id1,
(select full_nm
from cm501c c
where c.loc_id = a.loc_id1) loc_nm, addr1
from rm501m a
where upper(:sw) = 'FIRST'
and a.cust_nm = :cust_nm and a.tel_no like :cell_tell_no1||'%'
and rownum <= 51
)
select rnum, row_id, cardno, cust_id, cust_nm, rsno,
tel_no, cell_tel_no, loc_id1, loc_nm, addr1
from (select /*+ driving_site(a) index(a rm501m_idx04) */
rownum rnum, rowidtochar(rowid) row_id,
(select mbrcard_no from rm507T b
where b.cls_dt = '99991231'
and b.cust_id = a.cust_id) cardno, cust_id, cust_nm,
decode(rsno,'XXXXXXXXXXXXX','',rsno) rsno, tel_no, cell_tel_no, loc_id1,
(select full_nm from cm501c c
where c.loc_id = a.loc_id1) loc_nm, addr1
from rm501m a
where upper(:sw) = 'NEXT'
and a.cust_nm = :cust_nm
and (a.tel_no > :tell_no or (a.tel_no = :tell_no and a.rowid >=
chartorowid(:row_id)))
and a.tel_no like :tell_no1||'%'
and rownum <= 51
union all
select /*+ driving_site(a) index_desc (a rm501m_idx04) */
(52 - rownum) rnum, rowidtochar(rowid) row_id,
(select mbrcard_no
from rm507T b
where b.cls_dt = '99991231'
and b.cust_id = a.cust_id) cardno,
cust_id, cust_nm,
decode(rsno,'XXXXXXXXXXXXX','',rsno) rsno,
tel_no, cell_tel_no, loc_id1,
(select full_nm
from cm501c c
where c.loc_id = a.loc_id1) loc_nm, addr1
from rm501m a
where upper(:sw) = 'PREV'
and a.cust_nm = :cust_nm
and (a.tel_no < :tell_no or (a.tel_no = :tell_no and a.rowid <=
chartorowid(:row_id)))
and a.tel_no like :tell_no1||'%'
and rownum <= 51
)
order by rnum
ÀÌ ¹æ½ÄÀº ´Ù¾çÇÑ Á¶°ÇÀ» À妽º¸¦ ÀÌ¿ëÇÏ¿© Access Path¸¦ °íÁ¤½ÃŰ°í ¡®NEXT¡¯¸¦ ´©¸¦ °æ¿ì ÇØ´çÇϴ Ű °ªÀ» ³Ñ°ÜÁÖ¾î ȸéÀÇ °³¼ö¸¸Å¸¸ DB¸¦ AccessÇϵµ·Ï ÇÏ´Â ¹æ½ÄÀÌ´Ù. º» ³»¿ëÀ» ÇöÀç ´Ù ÀÌÇØÇÏÁö ¸øÇÏ¿©µµ »ó°üÀÌ ¾ø´Ù. ÀÌ·± ¹æ½ÄÀÌ ÀÖ´Ù°í ÇÏ´Â °Í¸¸ ¾Ë°Ô µÈ´Ù¸é µ¶ÀÚ ¿©·¯ºÐÀº ±× ¸ñÀûÀ» ´ÙÇß´Ù°í »ý°¢ÇÑ´Ù.
¿¹ 3. ±²ÀåÈ÷ ´Ù¾çÇÑ °Ë»öÁ¶°ÇÀÇ È¸éÀÇ °æ¿ì
 |
| <ȸé 3> Á¶°ÇÀÌ ´Ù¾çÇÑ °Ë»öÇÁ·Î±×·¥ |
ÀÌ ÇÁ·Î±×·¥Àº óÀ½¿¡ ¼Ò°³ÇÑ ¿¹Á¦ÀÇ »ó¼¼ °Ë»ö ȸ鿡 ÇØ´çµÈ´Ù. Áï, ¡®È¸¿ø¡¯ÀÇ °¡ÀÔ´ç½ÃÀÇ ¿©·¯ Á¶°ÇµéÀ» ´Ù¾çÇÏ°Ô °Ë»öÇÒ ¼ö ÀÖµµ·Ï ±¸¼ºÇÑ È¸éÀÎ °ÍÀÌ´Ù.
ÀÌ·± ȸéÀ» ±¸¼ºÇÒ ¶§ °³¹ßÀÚµéÀº µ¥ÀÌÅͺ£À̽º À§ÁÖÀÇ ÇÁ·Î±×·¥ÀÌ ºÒ°¡´ÉÇÏ´Ù°í »ý°¢Çϰí ÀÖ°í ·ÎÁ÷ À§ÁÖÀÇ ÇÁ·Î±×·¥À» ±¸»çÇÏ¸é¼ °³¹ßÀÚ ÆíÀÇÀÇ ÇÁ·Î±×·¥À» Â¥°í ÀÖ´Â °ÍÀÌ´Ù. ÇÏÁö¸¸ ÀÌ·± º¹ÀâÇÑ ÇÁ·Î±×·¥Àϼö·Ï µ¥ÀÌÅͺ£À̽º À§ÁÖÀÇ Áï, SQL À§ÁÖÀÇ ÇÁ·Î±×·¥À» ±¸»çÇØ¾ß ÇÁ·Î±×·¥ÀÌ ´Ü¼øÇØÁö°í ¼º´É»óÀÇ À§·ÂÀ» ¹ßÈÖÇÒ ¼ö ÀÖÀ¸¸ç µ¥ÀÌÅÍÀÇ Á¤È®µµ¿Í Â÷ÈÄ º¯°æ»çÇ×ÀÇ À¯Áöº¸¼ö µîÀÌ ÁÁ¾ÆÁö°Ô µÈ´Ù.
ÀÏ´Ü ÀÌ·¸°Ô º¹ÀâÇÏ°Ô ±¸¼ºÇØ¾ß ÇÏ´Â ÇÁ·Î±×·¥Àº ´ÙÀ½°ú °°Àº ´Ü¼øÇÑ ÀýÂ÷¸¦ »ý°¢ÇÏ¸é µÈ´Ù.
* ¡®Mandatory¡¯Á¶°ÇÀ» ÆÄ¾ÇÇÏ¿© ¡®Mandatory¡¯Á¶°Ç Áß µå¶óÀ̺ù ÆÑÅ͸¦ ¼±Á¤ÇÑ´Ù.
* ¡®°á°ú °Ç¼ö¡¯¿¡ µû¶ó Mandatory Á¶°Ç Ãß°¡ ¶Ç´Â ºÎºÐ¹üÀ§Ã³¸® °áÁ¤
* µå¶óÀ̺ù ÆÑÅÍ¿Í ÇÊÅ͸µ Á¶°ÇÀ» ºÐ¸®ÇÏ¿© µå¶óÀ̺ù ÆÑÅÍ´Â Nested LoopsÀÇ Á¶°ÇÀ¸·Î ÀÌ¿ëÇÏ°í ³ª¸ÓÁö Á¶°ÇµéÀº ÇÊÅ͸µÇÏ´Â Á¶°ÇÀ¸·Î ±¸ºÐÇÑ´Ù.
* À妽º Àü·«À» ¼ö¸³ÇÑ´Ù.
* µå¶óÀ̺ù ÆÑÅÍ¿Í ÇÊÅ͸µ ÆÑÅ͸¦ Àß Å» ¼ö ÀÖµµ·Ï °¡´ÉÇÑ One-SQL·Î ±¸¼ºÇÑ´Ù.
Tuned-SQL
select /*+ ordered use_nl(b a c) index(a BONGSAJA_IDX3)
index(c ACTION_BUN_PK) index(f center_uk)*/
rownum rnum, bm_regdate, bm_name, to_number(to_char(sysdate, 'yyyy')) -
to_number((case when substr(a.bm_jumin,7,1) in ('1','2') then '19'
when substr(a.bm_jumin,7,1) in ('3','4') then
'20' end)||substr(a.bm_jumin,1,2)) age,
bm_addr1, bm_addr2, bm_tel,
decode(a.actb_code, null, null,substr(c.actb_desc,1,2)
||'-'||d.actp_desc||'-'||decode(instr(e.actw_desc,
'('), 0, e.actw_desc, substr(e.actw_desc, 1,
instr(e.actw_desc, '(')-1))) action,
f.cent_name, bm_jumin, bm_school, job_code, bm_mtel, bm_email,
g.bg_name, a.bm_actday, substr(a.bm_facttime,1,2)||':'||
substr(a.bm_facttime,3,2)||'~'
||substr(a.bm_tacttime,1,2)||':'||substr(a.bm_tacttime,3,2) act_time,
h.KYUNG_DESC, a.BM_JONGKYO, a.bm_birthday, a.BM_WEDINGDAY,
a.birth_chk, a.bm_marry, a.bm_jumin jumin
from bongsaja a,
action_bun c,
action_prog d,
action_work e,
center f,
bong_group g,
kyungro h
where a.cent_sigun = :cent_sigun
and (a.bm_name > :start_name or (a.bm_name = :start_name
and a.bm_jumin >= :start_jumin))
and a.bm_state in (decode(:state,'1','1','5','1'),
decode(:state,'2','2','5','2'),
decode(:state,'3','3','5','3'),
decode(:state,'4','4','5','4'),
decode(:state,'5','5') )
and a.bm_regdate between :from_date and :to_date
and a.bm_sex like decode(:sex, '³²', '1', '¿©', '2', '%')
and a.bm_school like :school||'%'
and a.job_code like :job||'%'
and a.group_check like :grp||'%'
and ((:insu_chk = '1' and a.insu_chk = '1'
and nvl(:insu_fdate, '00000000') <= insu_tdate
and insu_fdate <= nvl(:insu_tdate, '99999999'))
or (:insu_chk = '2' and a.insu_chk is null)
or (:insu_chk = '3' and a.insu_chk like '%')
)
¡¦¡¦¡¦¡¦¡¦¡¦¡¦¡¦¡¦¡¦¡¦
and rownum <= 5
¡¡
ÀÌ ºÎºÐµµ ¡®ºÎºÐ¹üÀ§Ã³¸®¡¯ ¹æ½ÄÀ¸·Î ±¸ÇöÇÑ °ÍÀ¸·Î ·ÎÁ÷À¸·Î ¹ØÁÙ·Î µÇ¾î ÀÖ´Â ºÎºÐÀÌ µå¶óÀ̺ù ÆÑÅÍÀÌ°í ³ª¸ÓÁö Á¶°ÇµéÀº ÀüºÎ ÇÊÅ͸µ ÆÑÅÍ¿¡ ÇØ´çµÈ´Ù. ±¸»çÇß´ø ºÎºÐÀ» SQL·Î ±¸ÇöÇÏ´Â °ÍÀº ½±Áö ¾ÊÁö¸¸ ¡®»ý°¢ÀÇ Àüȯ¡¯À» ÇÏ°Ô µÇ¸é ±×¸® ¾î·Á¿î ºÎºÐµµ ¾Æ´Ï´Ù. ÇÊÀÚ´Â °°ÀÌ ÇÁ·ÎÁ§Æ®¸¦ Çß´ø °³¹ßÀÚµéÀÌ ÇÁ·ÎÁ§Æ® Á¾·á½ÃÁ¡¿¡ ³î¶ö¸¸ÇÑ SQL ±¸»ç ´É·Â Çâ»óÀ» °¡Á®¿Â °ÍÀ» ¿©·¯ ¹ø °æÇèÇß´Ù.
¿¹ 4. À妽º Àü·«ÀÇ ºÎÀç·Î ¼º´ÉÀúÇϰ¡ ÀÖ´Â °æ¿ì
 |
| <ȸé 4> »óǰÁ¶È¸ ÇÁ·Î±×·¥ |
ÀÌ ÇÁ·Î±×·¥Àº ¾î´À À¯Åëȸ»ç¿¡¼ ¡®»óǰ¡¯À» Á¶È¸ÇÏ´Â °£´ÜÇÑ È¸éÀ¸·Î ȸ»çÀÇ Æ¯¼º»ó °ü¸®ÇÏ´Â »óǰÀÇ Á¾·ù¿Í ¼ö°¡ ¸¹°í ´ëºÎºÐÀÇ ¾÷¹« ÀÚü°¡ ÀÌ »óǰÀ» °ü¸®ÇÏ´Â °ÍÀÌ´Ù º¸´Ï ÀÌ °£´ÜÇÑ ÇÁ·Î±×·¥À» Á¦ÀÏ ¸¹ÀÌ »ç¿ëÇϸ鼵µ ¼º´É ÀúÇϰ¡ °¡Àå ¸¹ÀÌ µÇ°í ÀÖ´Â ÇÁ·Î±×·¥À̾ú´Ù. ¿¹¸¦ µé¾î ¾ÕÀÇ È¸é¿¡¼ ¡®¸ÞÀÌÄ¿¡¯¿Í ¡®Ç°¸ñ¡¯Á¶°Ç¿¡ µÑ Áß Çϳª¸¸ µé¾î¿Íµµ ½ÇÇàÀÌ °¡´ÉÇÏ´Ù°í ÇØº¸¸é, ¡®¸ÞÀÌÄ¿¡¯ÀÇ Á¶°Ç¿¡ ¡®»ï¼º¡¯À̶ó´Â °ªÀ» ÁÖ°í Á¶È¸¸¦ ÇÒ ¼ö ÀÖ´Ù. ¸¸¾à ÀÌ·± Çö»óÀÌ ¹ß»ýÇÑ´Ù¸é ÀÌ ½Ã½ºÅÛÀÇ ¹®Á¦´Â ½É°¢ÇØÁø´Ù. ±×·±µ¥ À̰ÍÀÌ ½ÇÁ¦ »ç·ÊÀÌ´Ù.
±âÁ¸ ÇÁ·Î±×·¥
SELECT COUNT(*) total_cnt
FROM (SELECT C.MODELCD MODEL_CODE, 'Y' IMG_FLAG
FROM HI_SECT A,
HI_SECT B,
HI_PRDITM C,
HI_PRC E
WHERE A.SECTID = B.PRSTID
AND A.LBL = 2
AND B.SECTID = C.SECTPRSTID
AND B.LBL = 3
AND C.ACCEPTFLAG = 'Y'
AND C.SALEFLAG = 'Y'
AND C.PRDITMID = E.PRDITMID
AND E.NORMAL_PRC > 0
AND A.DBSTS = 'A'
AND B.DBSTS = 'A'
AND C.DBSTS = 'A'
AND E.DBSTS = 'A'
AND C.MFR LIKE '»ï¼º%'
UNION
SELECT a.MDLCD MODEL_CODE, 'N' IMG_FLAG
FROM SC011M a, SC013M b, SC010C c, CM101C d
WHERE b.MDLCD = a.MDLCD
AND c.PRDCLS_CD = substr(a.PRDCLS, 1, 2)
AND d.VEND_NO = a.MAKR_CD
AND a.DATA_REGDT >= to_char(sysdate - 30, 'YYYYMMDDHH24MISS')
AND b.AVCLDT = '99991231'
AND d.VEND_NM like '»ï¼º%'
)
¹®Á¦Á¡ ¹× ¿øÀÎ
»ó±â ÇÁ·Î±×·¥Àº »óǰÁ¶È¸ ȸ鿡¼ ¾²ÀÌ´Â ÇÁ·Î±×·¥À¸·Î »óǰÀÇ ¡®¸ÞÀÌÄ¿¡¯ ¶Ç´Â ¡®Ç°¸ñ¡¯À» Á¶È¸Á¶°ÇÀ¸·Î Çϰí ÀÖ´Ù. Á¶°ÇÀ¸·Î µé¾î¿Â ¡®»ï¼º¡¯À̶ó´Â ¸ÞÀÌÄ¿¿¡ ÇØ´çµÇ´Â µ¥ÀÌÅÍ·®Àº ¾öû³ª´Ù. Áï, ¡®»ï¼ºÀÇ ¸ðµç »óǰÀ» Á¶È¸¡¯ÇÏ´Â °á°ú°¡ µÇ´Â °ÍÀÌ´Ù. µû¶ó¼ µ¥ÀÌÅͺ£À̽º¸¦ ¿¢¼¼½ºÇÏ¿© ȸ鿡 »Ñ¸®´Â µ¥´Â »ó´çÇÑ ½Ã°£ÀÌ °É¸®°í ÀÖ´Â °ÍÀÌ´Ù.
°³¼±¹æ¾È
¡®¸ÞÀÌÄ¿¡¯³ª ¡®Ç°¸ñ¡¯ µÎ Á¶°ÇÀ» ¸ðµÎ Madatory Á¶°ÇÀ¸·Î º¯°æÇÏ°í ¡®¸ÞÀÌÄ¿¡¯ ºÎºÐÀº µ¥ÀÌÅͺ£À̽º¿¡¼ ¡®=¡¯·Î ¿¢¼¼½ºÇÒ ¼ö ÀÖµµ·Ï ÇÏ¸ç ¡®¸ÞÀÌÄ¿¡¯+ ¡®Ç°¸ñ¡¯À¸·Î °áÇÕ À妽º¸¦ ±¸¼ºÇÏ¿© °á°ú Row ¼ö°¡ ÃÖ¼Òȵǵµ·Ï À¯µµÇÏ¿© ºü¸¥ ÀÀ´ä½Ã°£À» À¯µµÇÑ´Ù.
SELECT COUNT(*) total_cnt
FROM ( SELECT /*+ ordered use_nl(c a b e) */
C.MODELCD ODEL_CODE, 'Y' IMG_FLAG
FROM HI_PRDITM C,
HI_SECT A,
HI_SECT B,
HI_PRC E
WHERE A.SECTID = B.PRSTID
AND A.LBL = 2
AND B.SECTID = C.SECTPRSTID
AND B.LBL = 3
AND C.ACCEPTFLAG = 'Y'
AND C.SALEFLAG = 'Y'
AND C.PRDITMID = E.PRDITMID
AND E.NORMAL_PRC > 0
AND A.DBSTS = 'A'
AND B.DBSTS = 'A'
AND C.DBSTS = 'A'
AND E.DBSTS = 'A'
AND C.CREDATE >= TO_CHAR(SYSDATE-30, 'YYYYMMDDHH24MISS')
AND C.MFR = '»ï¼º'
AND A.NAME LIKE '¼¼Å¹±â%'
UNION
SELECT /*+ ordered use_nl(a b c d) driving_site(a) */
a.MDLCD MODEL_CODE, 'N' IMG_FLAG
FROM SC011M a, SC013M b, SC010C c, CM101C d
WHERE b.MDLCD = a.MDLCD
AND c.PRDCLS_CD = substr(a.PRDCLS, 1, 2)
AND d.VEND_NO = a.MAKR_CD
AND a.DATA_REGDT >= to_char(sysdate - 30, 'YYYYMMDDHH24MISS')
AND b.AVCLDT = '99991231'
AND d.VEND_NM like '»ï¼º%'
AND c.PRDCLS_KORNM like '¼¼Å¹±â%'
)
Áö±Ý±îÁö ÇÊÀÚ°¡ ½ÇÁ¦·Î °æÇèÇß´ø °£´ÜÇÑ ¸î °³ÀÇ ¿¹Á¦µéÀ» ÅëÇØ RDBMS¿¡ ±â¹ÝÀ» µÎ¾î ¼º´É°³¼±À» ÇÑ »ç·Ê¸¦ »ìÆì º¸¾Ò´Ù. µ¥ÀÌÅͺ£À̽º ±â¹ÝÀÇ ÇÁ·Î±×·¡¹ÖÀº °áÄÚ ¾î·ÆÁö ¾Ê´Ù. ´Ù¸¸ ´ëºÎºÐÀÇ °³¹ßÀÚµéÀÌ Á¢±ÙÀ» À߸øÇϰí ÀÖÀ» »ÓÀÌ´Ù. ±×¸®°í ¾ÕÀÇ »ç·ÊµéÀ» ÇöÀç 100% ¼³¸íÇϱâ¶õ Áö¸é°ü°è»ó ºÒ°¡´ÉÇÑ Á¡À» ¾ÈŸ±õ°Ô »ý°¢ÇÑ´Ù. ÇÏÁö¸¸ À̹ø ¿¬À縦 ÅëÇØ µ¥ÀÌÅͺ£À̽º ÄÁ¼³ÆÃ ¿µ¿ª¿¡ ´ëÇØ °ø°¨À» Çß´Ù¸é ÇÊÀÚÀÇ ¸ñÀûÀ» ´Þ¼ºÇÑ °ÍÀ̶ó »ý°¢ÇÑ´Ù. ÀÚ¼¼ÇÑ ±â¼úÀûÀÎ ¹®Á¦µéÀº ´ÙÀ½ ±âȸ°¡ µÇ¸é ÀÚ¼¼È÷ ¼³¸íÇϰڴÙ.
ÀÌ·Î½á º» ¿¬Àç°¡ ¿©·¯ ÀÚµ¿ÈµÈ ÅøÀ» ´Ü¼øÈ÷ ÀÌ¿ëÇÏ´Â °ÍÀÌ ¾Æ´Ñ Á¾ÇÕÀûÀ̰í Ȱ¿ëÀûÀÎ µ¥ÀÌÅͺ£À̽º ¼º´É°ü¸® ¿µ¿ªÀÇ ¼Ò°³°¡ µÇ¾úÀ¸¸é ÇÏ´Â ¹Ù¶÷ÀÌ´Ù. ¶ÇÇÑ ÁøÁ¤ÇÑ µ¥ÀÌÅͺ£À̽º »ç¿ë Àü¹®°¡µéÀÌ ¸¹ÀÌ ³ªÅ¸³ª±æ ±â´ëÇÏ´Â ¸¶À½À¸·Î ¿¬À縦 ¸¶Ä£´Ù.@
* ÀÌ ±â»ç´Â ZDNet KoreaÀÇ Á¦ÈÞ¸ÅüÀÎ ¸¶ÀÌÅ©·Î¼ÒÇÁÆ®¿þ¾î¿¡ °ÔÀçµÈ ³»¿ëÀÔ´Ï´Ù.