SchoolZone
ȸ¿ø°¡ÀÔ | | ȸ¿øÇýÅÃ
[DBMS] 25°¡Áö SQLÀÛ¼º¹ý
±Û¾´ÀÌ ¸í¶ûÆóÀ΢⠳¯ Â¥ 03-01-04 00:04 Á¶ ȸ 9596
Link1 http://www.50001.com/ttboard/ttboard.cgi?act=view&code=546&bname=BBS10¡¦ (125)
1.µ¥ÀÌÅÍ¿Í ºñÁî´Ï½º ¾îÇø®ÄÉÀ̼ÇÀ» Àß ¾Ë¾Æ¾ß ÇÑ´Ù.
µ¿ÀÏÇÑ Á¤º¸´Â ´Ù¸¥ ºñÁî´Ï½º µ¥ÀÌÅÍ ¿øÃµÀ¸·ÎºÎÅÍ °Ë»öµÉ ¼ö ÀÖ´Ù. ÀÌ·¯ÇÑ ¿øÃµ¿¡ Àͼ÷ÇØ¾ß ÇÑ´Ù.
´ç½ÅÀº ´ç½ÅÀÇ µ¥ÀÌÅͺ£À̽º ¾ÈÀÇ µ¥ÀÌÅÍÀÇ Å©±â¿Í ºÐÆ÷¸¦ ¹Ýµå½Ã ¾Ë¾Æ¾ß ÇÑ´Ù.
¶ÇÇÑ SQLÀ» ÀÛ¼ºÇϱâ Àü¿¡ ºñÁî´Ï½º °³Ã¼ ¾ÈÀÇ °ü°è¿Í °°Àº µ¥ÀÌÅÍ ¸ðµ¨À» ÀüüÀûÀ¸·Î ÀÌÇØÇØ¾ß
ÇÑ´Ù. ÀÌ·¯ÇÑ ÀÌÇØ´Â ´ç½ÅÀÌ ¿©·¯ Å×ÀÌºí¿¡¼­ Á¤º¸¸¦ °Ë»öÇϴµ¥ À־ º¸´Ù ÁÁÀº Äõ¸®¸¦ ÀÛ¼ºÇÒ
¼ö ÀÖ´Ù. DESIGNER/2000°ú °°Àº CASE TOOLSÀº ´Ù¸¥ ºñÁî´Ï½º¿Í µ¥ÀÌÅͺ£À̽º °´Ã¼»çÀÌÀÇ °ü°è
¸¦ ¹®¼­È­ Çϴµ¥ ÁÁÀº ¿ªÇÒÀ» ÇÑ´Ù.

2.½ÇÁ¦ µ¥ÀÌÅ͸¦ °¡Áö°í ´ç½ÅÀÇ Äõ¸®¸¦ °Ë»çÇ϶ó.
´ëºÎºÐÀÇ Á¶Á÷Àº °³¹ß, °Ë»ç, Á¦Ç°ÀÇ 3°¡Áö µ¥ÀÌÅͺ£À̽º ȯ°æÀ» °¡Áø´Ù. ÇÁ·Î±×·¡¸Ó´Â
¾îÇø®ÄÉÀ̼ÇÀ» ¸¸µé°í °Ë»çÇϴµ¥ °³¹ß µ¥ÀÌÅͺ£À̽º ȯ°æÀ» »ç¿ëÇϴµ¥, ÀÌ ¾îÇø®ÄÉÀ̼ÇÀÌ
Á¦Ç° ȯ°æÀ¸·Î ÀüȯµÇ±â Àü¿¡ ÇÁ·Î±×·¡¸Ó¿Í »ç¿ëÀÚ¿¡ ÀÇÇØ °Ë»ç ȯ°æÇÏ¿¡¼­ º¸´Ù ¾ö°ÝÇÏ°Ô °ËÅäµÇ¾î
¾ß ÇÑ´Ù.
SQLÀÌ °Ë»ç ȯ°æÇÏ¿¡¼­ Å×½ºÆ®µÉ ¶§, °Ë»ç µ¥ÀÌÅͺ£À̽º°¡ °¡Áö°í ÀÖ´Â µ¥ÀÌÅÍ´Â Á¦Ç° µ¥ÀÌÅͺ£À̽º
¸¦ ¹Ý¿µÇØ¾ß ÇÑ´Ù. ºñ½ÇÁ¦ÀûÀÎ µ¥ÀÌÅ͸¦ °¡Áö°í Å×½ºÆ®µÈ SQL¹®Àº Á¦Ç° ¾È¿¡¼­´Â ´Ù¸£°Ô ÀÛµ¿ÇÒ ¼ö
ÀÖ´Ù. ¾ö°ÝÇÑ Å×½ºÆ®¸¦ º¸ÀåÇϱâ À§Çؼ­´Â, °Ë»ç ȯ°æÇÏ¿¡¼­ÀÇ µ¥ÀÌÅÍ ºÐÆ÷´Â ¹Ýµå½Ã Á¦Ç° ȯ°æ¿¡¼­
ÀÇ ºÐÆ÷¿Í ¹ÐÁ¢ÇÏ°Ô ´à¾Æ¾ß ÇÑ´Ù.

3.µ¿ÀÏÇÑ SQLÀ» »ç¿ëÇ϶ó.
°¡´ÉÇÑÇÑ BIND VARIABLE, STORED PROCEDURE, PACKAGEÀÇ ÀÌÁ¡À» Ȱ¿ëÇ϶ó. IDENTICAL SQL¹®
ÀÇ ÀÌÁ¡Àº PARSINGÀÌ ºÒÇÊ¿äÇϱ⿡ µ¥ÀÌÅͺ£À̽º ¼­¹ö¾È¿¡¼­ ¸Þ¸ð¸® »ç¿ëÀÇ Ãà¼Ò¿Í ºü¸¥ ¼öÇàÀ»
Æ÷ÇÔÇÑ´Ù. ¿¹·Î¼­ ¾Æ·¡ÀÇ SQL ¹®Àº IDENTICALÇÏÁö ¾Ê´Ù.

SELECT * FROM EMPLOYEE WHERE EMPID = 10;
SELECT * FROM EMPLOYEE WHERE EMPID = 10;
SELECT * FROM EMPLOYEE WHERE EMPID = 20;

±×·¯³ª I_EMPID¶ó°í À̸§ ÁÖ¾îÁø BIND VARIABLEÀ» »ç¿ëÇϸé SQL ¹®Àº ÀÌ·¸°Ô µÈ´Ù.
SELECT * FROM EMPLOYEE WHERE EMPID = :I_EMPID;

4.ÁÖÀÇ ±í°Ô À妽º¸¦ »ç¿ëÇ϶ó.
Å×À̺í»ó¿¡ ¸ðµç ÇÊ¿äÇÑ À妽º´Â »ý¼ºµÇ¾î¾ß ÇÑ´Ù. ÇÏÁö¸¸ ³Ê¹« ¸¹Àº À妽º´Â ¼º´ÉÀ» ¶³¾î¶ß¸±
¼ö ÀÖ´Ù. ±×·¯¸é ¾î¶»°Ô À妽º¸¦ ¸¸µé Ä®·³À» ¼±ÅÃÇØ¾ß Çϴ°¡?

*ÃÖÁ¾ »ç¿ëÀÚ¿¡ ÀÇÇØ »ç¿ëµÇ´Â ¾îÇø®ÄÉÀÌ¼Ç SQL°ú Äõ¸®ÀÇ WHERE Àý¿¡¼­ ºó¹øÇÏ°Ô »ç¿ëµÇ´Â Ä®·³
¿¡ À妽º¸¦ ¸¸µé¾î¾ß ÇÑ´Ù.

*SQL ¹®¿¡¼­ ÀÚÁÖ Å×À̺íÀ» JOINÇϴµ¥ »ç¿ëµÇ´Â Ä®·³Àº À妽ºµÇ¾î¾ß ÇÑ´Ù.

*°°Àº °ªÀ» °¡Áö´Â ROW°¡ ÀûÀº ºñÀ²À» °¡Áö´Â Ä®·³¿¡ À妽º¸¦ »ç¿ëÇ϶ó.

*Äõ¸®ÀÇ WHERE Àý¿¡¼­ ¿ÀÁ÷ ÇÔ¼ö¿Í OPERATOR·Î »ç¿ëµÇ´Â Ä®·³¿¡´Â À妽º¸¦ ¸¸µé¸é ¾ÈµÈ´Ù.

*ÀÚÁÖ º¯°æµÇ°Å³ª À妽º¸¦ ¸¸µé¶§ ¾ò´Â È¿À²¼ºº¸´Ù »ðÀÔ, °»½Å, »èÁ¦·Î ÀÎÇØ ÀÒ´Â È¿À²¼ºÀÌ ´õ Å«
Ä®·³¿¡´Â À妽º¸¦ ¸¸µé¸é ¾ÈµÈ´Ù. ÀÌ·¯ÇÑ OPERATIONÀº À妽º¸¦ À¯ÁöÇϱâ À§ÇÑ ÇÊ¿ä ¶§¹®¿¡ ´À·Á
Áø´Ù.

*UNIQUE À妽º´Â ´õ ³ªÀº ¼±Åüº ¶§¹®¿¡ NONUNIQUE À妽ºº¸´Ù ÁÁ´Ù. PRIMARY KEY Ä®·³¿¡
UNIQUE À妽º¸¦ »ç¿ëÇÑ´Ù. ±×¸®°í FOREIGN KEY Ä®·³°ú WHERE Àý¿¡¼­ ÀÚÁÖ »ç¿ëµÇ´Â Ä®·³¿¡´Â
NONUNIQUE À妽º¸¦ »ç¿ëÇÑ´Ù.

5.°¡¿ëÇÑ À妽º PATH¸¦ ¸¸µé¾î¶ó
À妽º¸¦ »ç¿ëÇϱâ À§Çؼ­´Â ±â¼úÇÑ SQL¹®À» ÀÌ¿ëÇÒ ¼ö ÀÖ´Â ½ÄÀ¸·Î SQLÀ» ÀÛ¼ºÇ϶ó. OPTIMIZER´Â
À妽º°¡ Á¸ÀçÇϱ⠶§¹®¿¡ À妽º¸¦ »ç¿ëÇÏ´Â ACESS PATH¸¦ »ç¿ëÇÒ ¼ö ¾ø´Ù. µû¶ó¼­ ACCESS PATH
´Â ¹Ýµå½Ã SQLÀÌ »ç¿ëÇÒ ¼ö ÀÖ°Ô ¸¸µé¾î Á®¾ß ÇÑ´Ù. SQL HINT¸¦ »ç¿ëÇÏ´Â °ÍÀº À妽º »ç¿ëÀ»
º¸ÁõÇØÁÖ´Â ¹æ¹ýÁß ÇϳªÀÌ´Ù. ƯÁ¤ ACCESS PATH¸¦ ¼±ÅÃÇϱâ À§ÇÑ ´ÙÀ½ÀÇ ÈùÆ®¸¦ Âü°í Ç϶ó

6.°¡´ÉÇϸé EXPLAIN°ú TKPROF¸¦ »ç¿ëÇ϶ó
¸¸¾à SQL¹®ÀÌ Àß ´Ùµë¾îÁöÁö ¾Ê¾Ò´Ù¸é ºñ·Ï ¿À¶óŬ µ¥ÀÌÅͺ£À̽º°¡ Àß Â¥¿©Á® À־ È¿À²¼ºÀÌ ¶³¾î
Áú °ÍÀÌ´Ù. ÀÌ·² °æ¿ì EXPLAIN TKPROF¿¡ ´É¼÷ÇØÁ®¾ß ÇÑ´Ù. EXPALIN PLANÀº SQLÀÌ »ç¿ëÇÏ´Â
ACCESS PATH¸¦ ¹ß°ßÇÒ ¼ö ÀÖ°Ô ÇØÁÖ°í TKPROF´Â ½ÇÁ¦ PERFORMANECÀÇ Åë°èÄ¡¸¦ º¸¿©ÁØ´Ù.
ÀÌ TOOLÀº ¿À¶óŬ ¼­¹ö ¼ÒÇÁÆ®¿þ¾î¿¡ Æ÷ÇԵǾî ÀÖ°í SQLÀÇ ¼º´ÉÀ» Çâ»ó½ÃÄÑ ÁØ´Ù.

7.OPTIMIZER¸¦ ÀÌÇØÇ϶ó.
SQLÀº RULE-BASED³ª COST-BASEDÁß Çϳª¸¦ ÀÌ¿ëÇØ¼­ ±âµ¿µÈ´Ù.±âÁ¸ÀÇ ¼ÒÇÁÆ®¿þ¾î´Â RULE BASED
¹æ½ÄÀ» äÅÃÇϰí ÀÖ´Ù. ±×¸®°í ¸¹Àº ¿À¶óŬ ¼ÒÇÁÆ®¿þ¾î°¡ ÀÌ·¯ÇÑ ¹æ½ÄÀ» ¿À·§µ¿¾È »ç¿ëÇØ ¿Ô´Ù.
±×·¯³ª »õ·Î Ãâ½ÃµÈ ¼ÒÇÁÆ®¿þ¾î¿¡ ´ëÇØ¼­´Â COST BASED ¹æ½ÄÀÇ OPTIMIZER¸¦ °í·ÁÇØ¾ß ÇÑ´Ù.
¿À¶óŬÀº »õ·Î Ãâ½ÃµÇ´Â ÇÁ·Î±×·¥À» COST BASED¹æ½ÄÀ¸·Î ¾÷±×·¹ÀÌµå ½ÃÄÑ¿ÔÀ¸¸ç ÀÌ·¯ÇÑ ¹æ½ÄÀº
½Ã½ºÅÛÀ» ÈξÀ ´õ ¾ÈÁ¤ÀûÀ¸·Î ¸¸µé¾ú´Ù. ¸¸¾à COST BASED¹æ½ÄÀÇ OPTIMIZER¸¦ »ç¿ëÇÑ´Ù¸é ¹Ýµå½Ã
ANALYZE ½ºÅ°¸¶¸¦ Á¤±âÀûÀ¸·Î »ç¿ëÇØ¾ß ÇÑ´Ù. ANALYZE½ºÅ°¸¶´Â µ¥ÀÌÅͺ£À̽º Åë°è¸¦ µ¥ÀÌÅÍ »çÀü
Å×ÀÌºí¿¡ ±â·ÏÇÏ´Â ¿ªÇÒÀ» ¼öÇàÇÏ¸ç ±×·¸°Ô µÇ¸é COST BASED OPTIMIZER°¡ ±×°ÍÀ» »ç¿ëÇϰÔ
µÈ´Ù. SQLÀº COST BASED OPTIMIZER¸¦ »ç¿ëÇÒ ¶§¸¸ Àß Á¶Á¤µÉ ¼ö ÀÖ´Ù. ¸¸¾à RULE BASED¿¡¼­
COST BASED·Î ¹Ù²Ù°í ½Í´Ù¸é µ¥ÀÌÅͺ£À̽º¸¦ »ç¿ëÇÏ´Â ¸ðµç ¼ÒÇÁÆ®¿þ¾îÀÇ ¸ðµç SQL¹®ÀÇ ¼º´ÉÀ»
Æò°¡ÇØ º¸¾Æ¾ß ÇÑ´Ù.

8.Áö¿±ÀûÀ¸·Î µ¿ÀÛÇÏ´õ¶óµµ Àü¿ªÀûÀ¸·Î »ý°¢Ç϶ó
Ç×»ó ÁÖÀÇÇÒ °ÍÀº ÇϳªÀÇ SQL¹®À» Á¶Á¤Çϱâ À§ÇØ »ý±ä µ¥ÀÌÅͺ£À̽º¾ÈÀÇ º¯È­´Â ´Ù¸¥ ÀÀ¿ëÇÁ·Î±×·¥
À̳ª ´Ù¸¥ »ç¿ëÀÚ°¡ ÀÌ¿ëÇÏ´Â ´Ù¸¥ ¸í·É¹®¿¡ ¿µÇâÀ» ¹ÌÄ£´Ù´Â »ç½ÇÀÌ´Ù.

9.WHEREÀýÀº ¸Å¿ì Áß¿äÇÏ´Ù.
ºñ·Ï À妽º°¡ °¡¿ëÇÏ´Ù°í ÇØµµ ´ÙÀ½ÀÇ WHERE ÀýÀº ±× À妽º ACCESS PATH ¸¦ »ç¿ëÇÏÁö ¾Ê´Â´Ù.
(Áï COL1 °ú COL2´Â °°Àº Å×ÀÌºí¿¡ ÀÖÀ¸¸ç À妽º´Â COL1¿¡ ¸¸µé¾îÁø´Ù.)

COL1 > COL2
COL1 < COL2
COL1 > = COL2
COL1 <= COL2
COL1 IS NULL
COL1 IS NOT NULL.

À妽º´Â NULL°ªÀ» °®´Â Ä®·³¿¡´Â ROWID¸¦ ÀúÀåÇÏÁö ¾Ê´Â´Ù. µû¶ó¼­ NULL°ªÀ» °®´Â ROW¸¦ °Ë»öÇÒ
¶§´Â À妽º¸¦ »ç¿ëÇÏÁö ¸øÇÑ´Ù.

COL1 NOT IN (VALUE1, VALUE2 )
COL1 != EXPRESSION
COL1 LIKE '%PATTERN'.

ÀÌ·² °æ¿ì THE LEADING EDGE OF THE INDEX(?) ´Â ÀÛµ¿µÇÁö ¾Ê°í À妽º°¡ »ç¿ëµÇÁö ¸øÇÏ°Ô ÇÑ
´Ù. ÇÑÆí COL1 LIKE 'PATTERN %'À̳ª COL1 LIKE 'PATTERN % PATTERN%' ´Â ÇÑÁ¤µÈ À妽º
½ºÄµÀ» ¼öÇàÇϱ⠶§¹®¿¡ À妽º¸¦ »ç¿ëÇÒ ¼ö ÀÖ´Ù.

NOT EXISTS SUBQUERY
EXPRESSION1 = EXPRESSION2.

À妽ºµÈ Ä÷³À» Æ÷ÇÔÇϴ ǥÇö(EXPRESSION), ÇÔ¼ö, °è»ê(CALCULATIONS)Àº À妽º¸¦ »ç¿ëÇÏÁö
¸øÇÑ´Ù. ´ÙÀ½ÀÇ ¿¹¿¡¼­ º¸¸é UPPER SQL ÇÔ¼ö¸¦ »ç¿ëÇϸé À妽º ½ºÄµÀ» »ç¿ëÇÒ ¼ö ¾ø°í
FULL TABLE SCANÀ¸·Î ³¡³ª°í ¸¸´Ù.

SELECT DEPT_NAME
FROM DEPARTMENT
WHERE UPPER(DEPT_NAME) LIKE 'SALES%';

10.·¹ÄÚµå ÇÊÅ͸µÀ» À§Çؼ­´Â HAVINGº¸´Ù´Â WHERE¸¦ »ç¿ëÇ϶ó
À妽º°¡ °É·ÁÀÖ´Â Ä®·³¿¡´Â GROUP BY¿Í °°ÀÌ HAVINGÀýÀ» »ç¿ëÇÏÁö ¸¶¶ó. ÀÌ °æ¿ì À妽º´Â »ç¿ë
µÇÁö ¾Ê´Â´Ù. ¶ÇÇÑ WHEREÀý·Î µÈ ROW¸¦ »ç¿ëÇÏÁö ¸¶¶ó. ¸¸¾à EMPÅ×À̺íÀÌ DEPTIDÄ÷³¿¡ À妽º
¸¦ °¡Áö°í ÀÖ´Ù¸é ´ÙÀ½ ÁúÀÇ´Â HAVING ÀýÀ» ÀÌ¿ëÇÏÁö ¸øÇÑ´Ù.

SELECT DEPTID,
SUM(SALARY)
FROM EMP
GROUP BY DEPTID
HAVING DEPTID = 100;

±×·¯³ª °°Àº ÁúÀǰ¡ À妽º¸¦ »ç¿ëÇϱâ À§ÇØ ´Ù½Ã ¾º¿©Áú ¼ö ÀÖ´Ù.

SELECT DEPTID,
SUM(SALARY)
FROM EMP
WHERE DEPTID = 100
GROUP BY DEPTID;

11. WHERE Àý¿¡ ¼±Çà INDEX Ä®·³À» ¸í½ÃÇ϶ó.
º¹ÇÕ À妽ºÀÇ °æ¿ì, ¼±Çà À妽º°¡ WHEREÀý¿¡ ¸í½ÃµÇ¾î ÀÖ´Ù¸é Äõ¸®´Â ±× À妽º ¸¦ »ç¿ëÇÒ °ÍÀÌ
´Ù. ´ÙÀ½ÀÇ ÁúÀÇ´Â PART_NUM°ú PRODUCT_ID Ä®·³¿¡ ÀÖ´Â PRIMARY KEY CONSTRAINT¿¡ ±âÃÊÇÑ
º¹ÇÕ À妽º¸¦ ÀÌ¿ëÇÒ °ÍÀÌ´Ù.

SELECT *
FROM PARTS
WHERE PART_NUM = 100;

¹Ý¸é, ´ÙÀ½ÀÇ Äõ¸®´Â º¹ÇÕÀ妽º¸¦ »ç¿ëÇÏÁö ¾Ê´Â´Ù.

SELECT *
FROM PARTS
WHERE PRODUCT_ID = 5555;

°°Àº ¿äû(REQUEST)ÀÌ À妽º¸¦ ÀÌ¿ëÇϱâ À§ÇØ ´Ù½Ã ¾º¾î Áú ¼ö ÀÖ´Ù. ´ÙÀ½ ÁúÀÇÀÇ °æ¿ì,
PART_NUMÄ÷³Àº Ç×»ó 0 º¸´Ù Å« °ªÀ» °¡Áú°ÍÀÌ´Ù.

SELECT *
FROM PARTS
WHERE PART_NUM > 0
AND PRODUCT_ID = 5555;

12.À妽º SCAN°ú FULL TABLE SCANÀ» Æò°¡Ç϶ó.
ÇÑ Çà(ROW)ÀÇ 15% ÀÌ»óÀ» °Ë»öÇÏ´Â °æ¿ì¿¡´Â FULL TABLE SCANÀÌ INDEX ACESS PATHº¸´Ù ºü¸£
´Ù. ÀÌ·± °æ¿ì, SQLÀÌ FULL TABLE SCANÀ» ÀÌ¿ëÇÒ ¼ö ÀÖµµ·Ï ¿©·¯ºÐ ½º½º·Î SQLÀ» ÀÛ¼ºÇ϶ó.
´ÙÀ½ÀÇ ¸í·É¹®Àº ºñ·Ï À妽º°¡ SALARY COLUMN¿¡ ¸¸µé¾îÁ® À־ À妽º SCANÀ» »ç¿ëÇÏÁö ¾ÊÀ»
°ÍÀÌ´Ù. ù ¹øÂ° SQL¿¡¼­, FULL HINT¸¦ »ç¿ëÇÑ´Ù¸é ¿À¶óŬÀº FULL TABLE SCANÀ» ¼öÇàÇÒ °ÍÀÌ
´Ù. À妽ºÀÇ »ç¿ëÀÌ ³ª»Û Á¡ÀÌ ´õ ¸¹´Ù¸é ¾Æ·¡ÀÇ ±â¼úÀ» ÀÌ¿ëÇØ¼­ À妽º ¼öÇàÀ» ¸·À»¼ö ÀÖ´Ù.

SELECT * --+FULL
FROM EMP
WHERE SALARY = 50000;

SELECT *
FROM EMP
WHERE SALARY+0 = 50000;

´ÙÀ½ÀÇ ¸í·É¹®Àº ºñ·Ï À妽º°¡ SS# COLUMN¿¡ À־ À妽º SCANÀ» »ç¿ëÇÏÁö ¾ÊÀ» °ÍÀÌ´Ù.

SELECT *
FROM EMP
WHERE SS# || ' ' = '111-22-333';

¿À¶óŬÀÌ ºÒºÐ¸íÇÑ µ¥ÀÌÅÍ º¯È¯À» ¼öÇàÇØ¾ß ÇÏ´Â °æ¿ì À妽º°¡ Ç×»ó »ç¿ëµÇÁö¾Ê´Â °ÍÀº ¾Æ´Ï´Ù.
´ÙÀ½ÀÇ ¿¹¸¦ º¸¸é, EMP Ä®·³¿¡ ÀÖ´Â SALARY´Â ¼ýÀÚÇü Ä®·³ÀÌ°í ¹®ÀÚÇüÀÌ ¼ýÀÚ°ªÀ¸·Î º¯È¯µÈ´Ù.

SELECT *
FROM EMP
WHERE SALARY = '50000';

Å×À̺íÀÇ ÇàÀÌ 15%À̰ųª ±×º¸´Ù ÀÛÀ» °æ¿ì À妽º ½ºÄµÀº º¸´Ù Àß ¼öÇà µÉ °ÍÀÌ´Ù. ¿Ö³Ä Çϸé Àε¦
½º ½ºÄµÀº °Ë»öµÈ Çà(ROW)Çϳª Çϳª ¸¶´Ù ´ÙÁßÀÇ ³í¸®ÀûÀÎ Àб⠰˻ö(READ)À» ÇÒ °ÍÀ̱⠶§¹®ÀÌ
´Ù. ±×·¯³ª FULL TABLE SCANÀº ÇϳªÀÇ ³í¸®Àû ÀÎ Àб⠰˻ö ¿µ¿ª ¾ÈÀÇ BLOCK¿¡ ÀÖ´Â ¸ðµç ÇàµéÀ»
ÀÐÀ» ¼ö ÀÖ´Ù. ±×·¡¼­ Å×À̺íÀÇ ¸¹Àº Çàµé¿¡ Á¢±ÙÇØ¾ß ÇÏ´Â °æ¿ì¿¡´Â FULL TABLE SCANÀÌ ³´´Ù.
¿¹·Î ´ÙÀ½ÀÇ °æ¿ì¸¦ º¸ÀÚ. ¸¸¾à EMP TABLE°ú ±× Å×À̺íÀÇ ¸ðµç À妽º¿¡ ´ëÇØ ANALYZE¶ó´Â ¸í·É¾î
°¡ ¼öÇàµÈ´Ù¸é, ¿À¶óŬÀº µ¥ÀÌÅÍ »çÀüÀÎ USER_TABLES¿Í USER_INDEXES¿¡ ´ÙÀ½°ú °°Àº Åë°èÄ¡¸¦
»êÃâÇØ ³½´Ù.

TABLE STATISTICS:
NUM_ROWS = 1000
BLOCKS = 100

INDEX STATISTICS:

BLEVEL = 2
AVG_LEAF_BLOCKS_PER_KEY = 1
AVG_DATA_BLOCKS_PER_KEY = 1

ÀÌ·¯ÇÑ Åë°èÄ¡¿¡ ±Ù°ÅÇØ¼­, ¾Æ·¡¿¡ º¸ÀÌ´Â °ÍÀÌ °¢°¢ÀÇ ´Ù¸¥ SCAN¿¡ ´ëÇÑ ³í¸®ÀûÀÎ Àбâ(READ)-Áï
ACESSµÈ BLOCKÀÌ µÉ °ÍÀÌ´Ù.

USE OF INDEX TO RETURN ONE ROW = 3

(BLEVEL+(AVG_LEAF_BLOCKS_PER_KEY - 1) +
AVG_DATA_PER_KEY

FULL TABLE SCAN = 100
(BLOCKS)

USE OF INDEX TO RETURN ALL ROWS = 3000
(NUM_ROWS * BLOCKS ACCESSED TO RETURN ONE ROW USING INDEX)

13. À妽º ½ºÄµ¿¡ ORDER BY¸¦ »ç¿ëÇ϶ó
¿À¶óŬÀÇ OPTIMIZER´Â , ¸¸¾à ORDER BY¶ó´Â ÀýÀÌ À妽ºµÈ Ä®·³¿¡ ÀÖ´Ù¸é À妽º ½ºÄµÀ» »ç¿ëÇÒ
°ÍÀÌ´Ù. ¾Æ·¡ÀÇ ÁúÀÇ´Â ÀÌ·¯ÇÑ Á¡À» º¸¿© ÁÖ´Â °ÍÀε¥ ÀÌ ÁúÀÇ´Â ºñ·Ï ±× Ä®·³ÀÌ WHERE Àý¿¡ ¸í½Ã
µÇ¾î ÀÖÁö ¾Ê´Ù°í ÇØµµ EMPIDÄ÷³¿¡ ÀÖ´Â °¡¿ëÇÑ À妽º¸¦ »ç¿ëÇÒ °ÍÀÌ´Ù. ÀÌ ÁúÀÇ´Â À妽º·ÎºÎ
ÅÍ °¢°¢ÀÇ ROWID¸¦ °Ë»öÇÏ°í ±× ROWID¸¦ »ç¿ëÇÏ´Â Å×ÀÌºí¿¡ Á¢±ÙÇÑ´Ù.

SELECT SALARY
FROM EMP
ORDER BY EMPID;

¸¸¾à ÀÌ ÁúÀǰ¡ Á¦´ë·Î ÀÛµ¿ÇÏÁö ¾Ê´Â´Ù¸é, ´ç½ÅÀº À§¿¡¼­ ¸í½ÃµÇ¾ú´ø FULL HINT¸¦ »ç¿ëÇÏ´Â °°Àº ÁúÀǸ¦ ´Ù½Ã ÀÛ¼ºÇÔÀ¸·Î½á ´Ù¸¥ ´ë¾ÈµéÀ» ÀÌ¿ëÇØ º¼ ¼ö ÀÖ´Ù.


14. ÀÚ½ÅÀÇ µ¥ÀÌÅ͸¦ ¾Ë¾Æ¶ó
³»°¡ ÀÌ¹Ì ¼³¸íÇÑ °Íó·³, ´ç½ÅÀº ´ç½ÅÀÇ µ¥ÀÌÅ͸¦ »ó¼¼ÇÏ°Ô ¾Ë°í ÀÖ¾î¾ß ÇÑ´Ù.¿¹¸¦ µé¾î ´ç½ÅÀÌ
BOXER¶ó´Â Å×À̺íÀ» °¡Áö°í ÀÖ°í ±× Å×À̺íÀÌ À¯ÀÏÇÏÁö ¾ÊÀº À妽º¸¦ °¡Áø SEX¶ó´Â Ä÷³°ú
BOXER_NAMEÀ̶ó´Â µÎ °³ÀÇ Å×À̺íÀ» °¡Áö°í ÀÖ´Ù°í °¡Á¤ÇØ º¸ÀÚ. ¸¸¾à ±× Å×ÀÌºí¿¡ °°Àº ¼öÀÇ
³²ÀÚ, ¿©ÀÚ º¹¼­°¡ ÀÖ´Ù¸é ¿À¶óŬÀÌ FULL TABLE SCANÀ» ¼öÇàÇÏ´Â °æ¿ì ´ÙÀ½ÀÇ ÁúÀǰ¡ ÈξÀ ºü¸¦
°ÍÀÌ´Ù.

SELECT BOXER_NAME
FROM BOXER
WHERE SEX = 'F';

´ç½ÅÀº ´ÙÀ½°ú °°ÀÌ ±â¼úÇÔÀ¸·Î½á ÁúÀǰ¡ FULL TABLE SCANÀ» ¼öÇàÇÏ´ÂÁö¸¦ È®½ÇÇÏ°Ô ÇØµÑ¼ö ÀÖ´Ù.

SELECT BOXER_NAME --+ FULL
FROM BOXER
WHERE SEX = 'F';

¸¸¾à Å×ÀÌºí¿¡ 980 ¸íÀÇ ³²¼º º¹¼­ µ¥ÀÌÅͰ¡ ÀÖ´Ù¸é, ÁúÀÇ´Â À妽º SCANÀ¸·Î ³¡³ª±â ¶§¹®¿¡
¾Æ·¡Çü½ÄÀÇ ÁúÀǰ¡ ´õ ºü¸¦ °ÍÀÌ´Ù.

SELECT BOXER_NAME --+ INDEX (BOXER BOXER_SEX)
FROM BOXER
WHERE SEX = 'F';

ÀÌ ¿¹´Â µ¥ÀÌÅÍÀÇ ºÐÆ÷¿¡ ´ëÇØ Àß ¾Ë°í ÀÖ´Â °ÍÀÌ ¾ó¸¶³ª Áß¿äÇÑ °¡¸¦ ¿¹½ÃÇØ ÁØ´Ù. µ¥ÀÌÅͰ¡ ¸¹¾ÆÁö°í(GROW) µ¥ÀÌÅÍ ºÐÆ÷°¡ º¯È­ÇÏ´Â °Íó·³ SQL µµ ¸Å¿ì ´Ù¾çÇÒ °ÍÀÌ´Ù. ¿À¶óŬÀº OPTIMIZER °¡ Å×ÀÌºí¿¡ ÀÖ´Â µ¥ÀÌÅÍÀÇ ºÐÆ÷¸¦ Àß ÀνÄÇϰí ÀûÀýÇÑ ½ÇÇà °èȹÀ» ¼±ÅÃÇϵµ·Ï Çϱâ À§ÇØ ¿À¶óŬ 7.3 ¿¡ HISTOGRAMS¶ó´Â ±â´ÉÀ» Ãß°¡Çß´Ù.

15. KNOW WHEN TO USE LARGE-TABLE SCANS.
À۰ųª Å« Å×ÀÌºí¿¡¼­ ÇàµéÀ» ÃßÃâÇÒ ¶§, Àüü Å×À̺íÀÇ °Ë»öÀº ÀÎÅØ½º¸¦ »ç¿ëÇÑ °Ë»öº¸´Ù ¼º´ÉÀÌ
´õ ÁÁÀ» ¼öµµ ÀÖ´Ù. ¸Å¿ì Å« Å×À̺íÀÇ À妽º °Ë»öÀº ¼ö¸¹Àº À妽º¿Í Å×ÀÌºí ºí·ÏÀÇ °Ë»öÀÌ ÇÊ¿äÇÒ
¼öµµ ÀÖ´Ù. ÀÌ·¯ÇÑ ºí·ÏµéÀÌ µ¥ÀÌÅͺ£ÀÌ ½º ¹öÆÛ ij½¬¿¡ À̵¿µÇ¸é °¡´ÉÇÑÇÑ ¿À·¡µµ·Ï ±×°÷¿¡ ¸Ó¹«¸¥
´Ù. ±×·¡¼­ ÀÌ·¯ÇÑ ºí·ÏµéÀÌ ´Ù¸¥ ÁúÀǵ ÇÊ¿äÇÏÁö ¾ÊÀ» ¼öµµ Àֱ⠶§¹®¿¡, µ¥ÀÌÅͺ£À̽º ¹öÆÛ
È÷Æ® ºñÀ²ÀÌ °¨¼ÒÇÏ¸ç ´ÙÁß »ç¿ëÀÚ ½Ã½ºÅÛÀÇ ¼º´Éµµ ÀúÇϵDZ⵵ ÇÑ´Ù. ±×·¯³ª Àüü Å×ÀÌºí °Ë»ö¿¡
ÀÇÇØ¼­ ÀÐÇôÁø ºí·ÏµéÀº µ¥ÀÌÅͺ£À̽º ¹öÆÛ ij½¬¿¡¼­ ÀÏÂï Á¦°Å°¡ µÇ¹Ç·Î µ¥ÀÌÅͺ£À̽º ¹öÆÛ ij½¬
È÷Æ® ºñÀ²Àº ¿µÇâÀ» ¹ÞÁö ¾Ê°Ô µÈ´Ù.

16. MINIMIZE TABLE PASSES.
º¸Åë, SQLÁúÀǽà ÂüÁ¶ÇÏ´Â Å×À̺íÀÇ ¼ýÀÚ¸¦ ÁÙÀÓÀ¸·Î ¼º´ÉÀ» Çâ»ó½ÃŲ´Ù. ÂüÁ¶µÇ´Â Å×À̺íÀÇ ¼ýÀÚ
°¡ ÀûÀ»¼ö·Ï ÁúÀÇ´Â »¡¶óÁø´Ù. ¿¹¸¦ µé¸é NAME, STATUS, PARENT_INCOME, SELF_INCOMEÀÇ ³×°³
ÀÇ Ä÷³À¸·Î ÀÌ·ç¾îÁø Çлý Å×ÀÌºí ¿¡¼­ ºÎ¸ð´Ô¿¡ ÀÇÁ¸ÇÏ´Â Çлý°ú µ¶¸³ÇÑ ÇлýÀÇ À̸§°ú ¼öÀÔ¿¡
´ëÇØ¼­ ÁúÀǽÃ, ÀÌ Çлý Å×À̺íÀ» µÎ¹ø ÂüÁ¶ÇÏ¿© ÁúÀÇÇÏ°Ô µÈ´Ù..
SELECT NAME, PARENT_INCOME
FROM STUDENT
WHERE STATUS = 1
UNION
SELECT NAME, SELF_INCOME
FROM STUDENT
WHERE STATUS = 0;
( NAMEÀÌ ÇÁ¶óÀ̸Ӹ® ŰÀ̸ç, STATUS´Â µ¶¸³ÇÑ ÇлýÀÇ °æ¿ì´Â 1, ºÎ¸ð´Ô¿¡ ÀÇÁ¸ÀûÀÎ ÇлýÀº 0À¸·Î
Ç¥½ÃÇÑ´Ù)
À§ÀÇ °°Àº °á°ú¸¦ Å×À̺íÀ» µÎ¹ø ÂüÁ¶ÇÏÁö ¾Ê°íµµ ÁúÀÇ ÇÒ ¼ö ÀÖ´Ù.

SELECT NAME,PARENT_INCOME*STATUS + SELF_INCOME(1-STATUS)
FROM STUDENT;

17. JOIN TABLES IN THE PROPER ORDER.
´Ù¼öÀÇ Å×À̺í Á¶Àνà Å×À̺íµéÀÇ Á¶ÀεǴ ¼ø¼­´Â ¸Å¿ì Áß¿äÇÏ´Ù. Àü¹ÝÀûÀ¸·Î, ¿Ã¹Ù¸¥ ¼ø¼­·Î Å×ÀÌ
ºíÀÌ Á¶ÀεǾú´Ù¸é ÀûÀº ¼öÀÇ ÇàµéÀÌ ÁúÀǽà ÂüÁ¶µÈ´Ù. ¾ðÁ¦³ª ´Ù¼öÀÇ Á¶ÀÎµÈ Å×À̺íµéÀ» ÁúÀǽÃ
¿ì¼± ¾ö°ÝÇÏ°Ô Á¶»çÇÏ¿© ÇàµéÀÇ ¼ýÀÚ¸¦ ÃÖ´ëÇÑÀ¸·Î ÁÙÀδÙ. ÀÌ·¯ÇÑ ¹æ¹ýÀ¸·Î ¿ÉƼ¸¶ÀÌÀú´Â Á¶ÀÎÀÇ
Â÷ÈÄ ´Ü°è¿¡¼­ ÀûÀº ÇàµéÀ» Á¶»çÇÏ°Ô µÈ´Ù. »Ó¸¸ ¾Æ´Ï¶ó, ¿©·¯ Á¶ÀÎÀ» Æ÷ÇÔÇÏ´Â LOOP JOIN¿¡¼­´Â
°¡Àå ¸ÕÀú ÂüÁ¶µÇ´Â Å×À̺í(DRIVING TABLE)ÀÌ ÇàµéÀ» ÃÖ¼ÒÇÑÀ¸·Î ¸®ÅÏÇϵµ·Ï ÇØ¾ßÇÑ´Ù. ±×¸®°í,
¸¶½ºÅÍ¿Í »ó¼¼ Å×À̺í Á¶Àνÿ¡´Â(¿¹¸¦ µé¸é ORDER & ORDER LINE ITEM TABLES) ¸¶½ºÅÍ Å×À̺í
À» ¸ÕÀú ¿¬°á ½ÃÄÑ¾ß ÇÑ´Ù. ±ÔÄ¢¿¡ ±Ù°ÅÇÑ ¿ÉƼ¸¶ÀÌÀúÀÇ °æ¿ì¿¡´Â FROM CLAUSEÀÇ ¸¶Áö¸· Å×À̺í
ÀÌ NESTED LOOP JOINÀÇ DRIVING TABLEÀÌ µÈ´Ù. NESTED LOOP JOINÀÌ ÇÊ¿äÇÑ °æ¿ì¿¡´Â LOOP
ÀÇ ¾ÈÂÊÀÇ Å×ÀÌºí¿¡´Â ÀÎÅØ½º¸¦ ÀÌ¿ëÇÏ´Â °ÍÀ» °í·ÁÇÒ ¸¸ÇÏ´Ù. EXPLAIN PLAN°ú TKPROF´Â Á¶ÀÎ
ŸÀÔ, Á¶ÀÎ Å×ÀÌºí ¼ø¼­, Á¶ÀÎÀÇ ´Ü°èº° ó¸®µÈ ÇàµéÀÇ ¼ýÀÚµéÀ» ³ªÅ¸³½´Ù.
ºñ¿ë¿¡ ±Ù°ÅÇÑ ¿ÉƼ¸¶ÀÌÀúÀÇ °æ¿ì¿¡´Â WHERE CLAUSE¿¡ º¸¿©Áö´Â Å×À̺íÀÇ ¼ø¼­´Â ¿ÉƼ¸¶ÀÌÀú°¡
°¡Àå ÃÖÀûÀÇ ½ÇÇà °èȹÀ» ãÀ¸·Á°í ÇÏ´Â °Í°ú »ó°ü ¾ø´Ù. Á¶ÀεǴ Å×À̺íÀÇ ¼ø¼­¸¦ ÅëÁ¦Çϱâ À§ÇØ
¼­ ORDERED HINT¸¦ »ç¿ëÇÏ´Â °ÍÀÌ ³´´Ù.

SELECT ORDERS.CUSTID, ORDERS.ORDERNO,
ORDER_LINE_ITEMS.PRODUCTNO --+ORDERED
FROM ORDERS, ORDER_LINE_ITEMS
WHERE ORDERS.ORDERNO = ORDER_LINE_ITEMS.ORDERNO;

18. USE INDEX-ONLY SEARCHES WHEN POSSIBLE.
°¡´ÉÇÏ´Ù¸é, À妽º¸¸À» ÀÌ¿ëÇÏ¿© ÁúÀǸ¦ »ç¿ëÇ϶ó. ¿ÉƼ¸¶ÀÌÀú´Â ¿ÀÁ÷ À妽º¸¸À» ãÀ» °ÍÀÌ´Ù.
¿ÉƼ¸¶ÀÌÀú´Â SQLÀ» ¸¸Á·½ÃŰ´Â ¸ðµç Á¤º¸¸¦ À妽º¿¡¼­ ãÀ»¼ö ÀÖÀ»¶§,À妽º¸¸À» ÀÌ¿ëÇÒ °ÍÀÌ´Ù.
¿¹¸¦µé¸é, EMPÅ×À̺íÀÌ LANME°ú FNAMEÀÇ ¿­¿¡ º¹ÇÕ À妽º¸¦ °¡Áö°í ÀÖ´Ù¸é ´ÙÀ½ÀÇ ÁúÀÇ´Â
À妽º¸¸Àº ÀÌ¿ëÇÒ °ÍÀÌ´Ù.

SELECT FNAME
FROM EMP
WHERE LNAME = 'SMITH';

¹Ý¸é¿¡ ´ÙÀ½ÀÇ ÁúÀÇ´Â À妽º¿Í Å×À̺íÀ» ¸ðµÎ ÂüÁ¶ÇÑ´Ù.

SELECT FNAME , SALARY
FROM EMP
WHERE LNAME = 'SMITH';

19. REDUNDANCY IS GOOD.

WHERE CLAUSE¿¡ °¡´ÉÇÑÇÑ ¸¹Àº Á¤º¸¸¦ Á¦°øÇ϶ó. ¿¹¸¦ µé¸é WHERE COL1 = COL2 AND COL1 = 10
À̶ó¸é ¿ÉƼ¸¶ÀÌÀú´Â COL2=10À̶ó°í Ãß·ÐÇÏÁö¸¸, WHERE COL1 = COL2 AND COL2 = COL3À̸é
COL1=COL3À̶ó°í ÃÊ·ÐÇÏÁö´Â ¾Ê´Â´Ù.

20. KEEP IT SIMPLE, STUPID.
°¡´ÉÇϸé SQL¹®À» °£´ÜÇÏ°Ô ¸¸µé¶ó. ¸Å¿ì º¹ÀâÇÑ SQL¹®Àº ¿ÉƼ¸¶ÀÌÀú¸¦ ¹«·ÂÈ­½Ãų ¼öµµ ÀÖ´Ù.
¶§·Î´Â ´Ù¼öÀÇ °£´ÜÇÑ SQL¹®ÀÌ ´ÜÀÏÀÇ º¹ÀâÇÑ SQL¹®º¸´Ù ¼º´ÉÀÌ ÁÁÀ» ¼öµµ ÀÖ´Ù.
¿À¶óŬÀÇ ºñ¿ë¿¡ ±Ù°ÅÇÑ ¿ÉƼ¸¶ÀÌÀú´Â ¾ÆÁ÷Àº ¿Ïº®ÇÏÁö¾Ê´Ù. ±×·¡¼­ EXPLAIN PLAN¿¡ ÁÖÀǸ¦
±â¿ï¿©¾ß ÇÑ´Ù. ¿©±â¼­ ºñ¿ëÀ̶õ »ó´ëÀûÀÎ °³³äÀ̱⿡ Á¤È®È÷ ±×°ÍÀÌ ¹«¾ùÀ» ÀǹÌÇÏ´ÂÁö ¾ËÁö
¸ñÇÑ´Ù. ÇÏÁö¸¸ ºÐ¸íÇÑ °ÍÀº ÀûÀº ºñ¿ëÀÌ º¸´Ù ÁÁÀº ¼º´ÉÀ» ÀǹÌÇÑ´Ù´Â °ÍÀÌ´Ù.
Á¾Á¾ Àӽà Å×À̺íÀ» »ç¿ëÇÏ¿© ¸¹Àº Å×À̺íµéÀ» Æ÷ÇÔÇÏ´Â º¹ÀâÇÑ SQL Á¶ÀÎÀ» Âɰ³´Â °ÍÀÌ È¿À²ÀûÀÏ
¼öµµ ÀÖ´Ù. ¿¹¸¦ µé¸é, Á¶ÀÎÀÌ ´ë·®ÀÇ µ¥ÀÌÅͰ¡ ÀÖ´Â 8°³ÀÇ Å×À̺íÀ» Æ÷ÇÔÇÒ ¶§, º¹ÀâÇÑ SQLÀ» µÎ
¼¼°³ÀÇ SQL·Î Âɰ³´Â °ÍÀÌ ³´À» ¼ö ÀÖ´Ù. °¢°¢ÀÇ ÁúÀÇ´Â ¸¹¾Æ¾ß ³×°³Á¤µµÀÇ Å×À̺íµéÀ» Æ÷ÇÔÇϸç
Áß°£ °ªÀ» ÀúÀå ÇÏ´Â °ÍÀÌ ³´À» ¼ö ÀÖ´Ù.

21. YOU CAN REACH THE SAME DESTINATION IN DIFFERENT WAYS.
¸¹Àº °æ¿ì¿¡, Çϳª ÀÌ»óÀÇ SQL¹®Àº ÀǵµÇÑ °°Àº °á°ú¸¦ ÁÙ ¼ö ÀÖ´Ù. °¢°¢ÀÇ SQLÀº ´Ù¸¥ Á¢±Ù °æ·Î
¸¦ »ç¿ëÇÏ¸ç ´Ù¸£°Ô ¼öÇàÇÑ´Ù. ¿¹¸¦µé¸é, MINUS(-) »ê¼úÀÚ´Â WHERE NOT IN (SELECT ) OR
ERE NOT EXISTS º¸´Ù ´õ ºü¸£´Ù.
¿¹¸¦µé¸é, STATE¿Í AREA_CODE¿¡ °¢°¢ ´Ù¸¥ À妽º°¡ °É·Á ÀÖ´Ù. À妽º¿¡µµ ºÒ±¸ÇÏ°í ´ÙÀ½ÀÇ ÁúÀÇ
´Â NOT INÀÇ »ç¿ëÀ¸·Î ÀÎÇØ Å×À̺í Àüü¸¦ Á¶»çÇϰԵȴÙ.
SELECT CUSTOMER_ID
FROM CUSTOMERS
WHERE STATE IN ('VA', 'DC', 'MD')
AND AREA_CODE NOT IN (804, 410);

±×·¯³ª °°Àº ÁúÀǰ¡ ´ÙÀ½ ó·³ ¾²¿©Áø´Ù¸é À妽º¸¦ »ç¿ëÇÏ°Ô µÈ´Ù
SELECT CUSTOMER_ID
FROM CUSTOMERS
WHERE STATE IN ('VA', 'DC', 'MD')
MINUS
SELECT CUSTOMER_ID
FROM CUSTOMERS
WHERE AREA_CODE IN (804, 410);

WHEREÀý¿¡ ORÀ» Æ÷ÇÔÇÑ´Ù¸é OR´ë½Å¿¡ UNIONÀ» »ç¿ëÇÒ ¼ö ÀÖ´Ù. ±×·¡¼­, SQL ÁúÀǸ¦ ¼öÇàÇϱâ
Àü¿¡ ¸ÕÀú ½ÇÇà°èȹÀ» Á¶½É½º·´°Ô Æò°¡ÇØ¾ß ÇÑ´Ù. ÀÌ·¯ÇÑ Æò°¡´Â EXPLAIN PLAN AND TKPROF¸¦ ÀÌ
¿ëÇÏ¿© ÇÒ ¼ö ÀÖ´Ù.

22. USE THE SPECIAL COLUMNS.
ROWID AND ROWNUM ¿­À» ÀÌ¿ëÇ϶ó. ROWID¸¦ ÀÌ¿ëÇÏ´Â °ÍÀÌ °¡Àå ºü¸£´Ù.
¿¹¸¦µé¸é, ROWID¸¦ ÀÌ¿ëÇÑ UPDATE´Â ´ÙÀ½°ú °°´Ù.

SELECT ROWID, SALARY
INTO TEMP_ROWID, TEMP_SALARY
FROM EMPLOYEE;

UPDATE EMPLOYEE
SET SALARY = TEMP_SALARY * 1.5
WHERE ROWID = TEMP_ROWID;

ROWID°ªÀº µ¥ÀÌÅͺ£À̽º¿¡¼­ ¾ðÁ¦³ª °°Áö´Â ¾Ê´Ù. ±×·¡¼­, SQLÀ̳ª ÀÀ¿ë ÇÁ·Î±×·¥ÀÌ¿ë½Ã ROWID°ª
À» Àý´ëÈ­ ½ÃŰÁö ¸»¶ó. ¸®ÅϵǴ ÇàµéÀÇ ¼ýÀÚ¸¦ Á¦ÇÑ ½Ã۱âÀ§ÇØ ROWNUMÀ» ÀÌ¿ëÇ϶ó. ¸¸¾à¿¡ ¸®ÅÏ
µÇ´Â ÇàµéÀ» Á¤È®È÷ ¸ð¸¥´Ù¸é ¸®ÅϵǴ ÇàµéÀÇ ¼ýÀÚ¸¦ Á¦ÇÑÇϱâÀ§ÇØ ROWNUMÀ» »ç¿ëÇ϶ó
´ÙÀ½ÀÇ ÁúÀÇ´Â 100°³ ÀÌ»óÀÇ ÇàµéÀ» ¸®ÅÏÇÏÁö´Â ¾Ê´Â´Ù.
SELECT EMPLOYE.SS#, DEPARTMENT.DEPT_NAME
FROM EMPLOYEE, DEPENDENT
WHERE EMPLOYEE.DEPT_ID = DEPARTMENT.DEPT_ID
AND ROWNUM < 100;

23.ÇÔÃàÀûÀÎ Ä¿¼­´ë½Å ¸í½ÃÀûÀÎ Ä¿¼­¸¦ »ç¿ëÇ϶ó.
ÇÔÃàÀû Ä¿¼­´Â ¿©ºÐÀÇ FETCH¸¦ ¹ß»ý½ÃŲ´Ù. ¸í½ÃÀû Ä¿¼­´Â DECLARE, OPEN, FETCH¿Í CLOSE
CURSOR¹®À» »ç¿ëÇÏ¿© °³¹ßÀÚ¿¡ ÀÇÇØ¼­ »ý¼ºµÈ´Ù. ÇÔÃà Ä¿¼­´Â DELETE, UPDATE, INSERT¿Í
SELECT¹®À» »ç¿ëÇÏ¸é ¿À¶óŬ¿¡ ÀÇÇØ¼­ »ý¼ºµÈ´Ù.

24.¿À¶óŬ º´·Ä Äõ¸® ¿É¼ÇÀ» ã¾Æ¼­ ÀÌ¿ëÇ϶ó.
º´·Ä Äõ¸® ¿É¼ÇÀ» »ç¿ëÇϸé, º¸´Ù ºü¸¥ ¼º´ÉÀ¸·Î SQLÀ» º´·Ä·Î ½ÇÇàÇÒ ¼ö ÀÖ´Ù.
¿À¶óŬ 7¿¡¼­´Â, ¿ÀÁ÷ FULL TABLE SCAN¿¡ ±â¹ÝÇÑ Äõ¸®¸¸ÀÌ º´·Ä·Î ¼öÇàµÉ ¼ö ÀÖ´Ù.
¿À¶óŬ 8¿¡¼­´Â, À妽º°¡ ºÐÇҵǾîÀÖ´Ù¸é INDEXED RANGE SCANS¿¡ ±â¹ÝÇÑ Äõ¸®µµ º´·Ä·Î 󸮵É
¼ö ÀÖ´Ù. º´·Ä Äõ¸® ¿É¼ÇÀº ´Ù¼öÀÇ µð½ºÅ© µå¶óÀ̹ö¸¦ Æ÷ÇÔÇÏ´Â SMP¿Í MPP SYSTEM¿¡¼­¸¸ »ç¿ëµÉ
¼ö ÀÖ´Ù.

¿À¶óŬ ¼­¹ö´Â ¸¹Àº ¿ì¼öÇÑ Æ¯¼ºÀ» °¡Áö°í ÀÖÁö¸¸, ÀÌ·¯ÇÑ Æ¯¼ºÀÇ Á¸À縸À¸·Î´Â ºü¸¥ ¼º´ÉÀ» º¸ÀåÇÏ
Áö ¾Ê´Â´Ù. ÀÌ·¯ÇÑ Æ¯¼ºÀ» À§Çؼ­ µ¥ÀÌÅͺ£À̽º¸¦ Á¶Á¤ÇؾßÇÏ¸ç Æ¯¼ºÀ» ÀÌ¿ëÇϱâ À§ÇØ Æ¯º°ÇÏ°Ô SQL
À» ÀÛ¼ºÇØ¾ß ÇÑ´Ù. ¿¹¸¦ µé¸é, ´ÙÀ½ÀÇ SQLÀº º´·Ä·Î ¼öÇàµÉ ¼ö ÀÖ´Ù.

SELECT * --+PARALLEL(ORDERS,6)
FROM ORDERS;

25.³×Æ®¿÷ ¼ÒÅë·®À» ÁÙÀ̰í Çѹø¿¡ 󸮵Ǵ ÀÛ¾÷·®À» ´Ã·Á¶ó.
ARRAY PROCESSING°ú PL/SQL BLOCKÀ» »ç¿ëÇÏ¸é º¸´Ù ³ªÀº ¼º´ÉÀ» ¾òÀ» ¼ö ÀÖ°í ³×Æ®¿÷ ¼ÒÅë·®À»
ÁÙÀδÙ. ARRAY PROCESSINGÀº ÇϳªÀÇ SQL¹®À¸·Î ¸¹Àº ROW¸¦ ó¸®ÇÒ ¼ö ÀÖ°Ô ÇÑ´Ù. ¿¹¸¦ µé¸é,
INSERT¹®¿¡¼­ ¹è¿­À» »ç¿ëÇϸé Å×ÀÌºí³»ÀÇ 1,000 ROW¸¦ »ðÀÔÇÒ ¼ö ÀÖ´Ù. ÀÌ·¯ÇÑ ±â¼úÀ» »ç¿ëÇϸé
ÁÖ¿äÇÑ ¼º´É Çâ»óÀ» Ŭ¶óÀ̾ðÆ®/¼­¹ö¿Í ¹èÄ¡½Ã½ºÅÛ¿¡¼­ ¾ò¾îÁú ¼ö ÀÖ´Ù.

º¹ÇÕ SQL¹®Àº °úµµÇÑ ³×Æ®¿÷ ¼ÒÅëÀ» À¯¹ßÇÒ ¼ö ÀÖ´Ù. ±×·¯³ª ¸¸ÀÏ SQL¹®ÀÌ ´ÜÀÏ PL/SQL ºí·Ï¾È¿¡
ÀÖ´Ù¸é, Àüü ºí·ÏÀº ¿À¶óŬ ¼­¹ö¿¡ º¸³»Á®¼­ ±×°÷¿¡¼­ ¼öÇàµÇ°í, °á°ú´Â Ŭ¶óÀ̾ðÆ®ÀÇ
APPLICATION¿¡°Ô µ¹¾Æ¿Â´Ù.

°³¹ßÀÚ¿Í »ç¿ëÀÚ´Â Á¾Á¾ SQLÀ» µ¥ÀÌÅͺ£À̽º¿¡¼­ µ¥ÀÌÅ͸¦ °Ë»öÇϰí Àü¼ÛÇÏ´Â °£´ÜÇÑ ¹æ¹ýÀ¸·Î »ç¿ë
ÇÑ´Ù. ¶§¶§·Î Á÷Á¢ÀûÀ¸·Î SQLÀ» ÀÛ¼ºÇÏÁö ¾Ê°í ÄÚµå ¹ß»ý±â¸¦ »ç¿ëÇÏ¿© ÀÛ¼ºÇÑ APPLICATIONÀº ½É
°¢ÇÑ ¼º´É ¹®Á¦¸¦ ÀÏÀ¸Å²´Ù. ÀÌ·¯ÇÑ ¼º´É°¨Åð´Â µ¥ÀÌÅͺ£À̽º°¡ Ä¿Áö¸é¼­ Áõ°¡ÇÑ´Ù.

SQLÀº À¯¿¬Çϱ⠶§¹®¿¡, ´Ù¾çÇÑ SQL¹®À¸·Î °°Àº °á°ú¸¦ ¾òÀ» ¼ö ÀÖ´Ù. ±×·¯³ª ¾î¶² ¹®Àº ´Ù¸¥ °Íº¸
´Ù ´õ È¿À²ÀûÀÌ´Ù. ¿©±â¿¡ ±â¼úµÈ ÆÁ°ú ±â¹ýÀ» »ç¿ëÇÏ¸é ºü¸£°Ô »ç¿ëÀÚ¿¡°Ô Á¤º¸¸¦ Á¦°øÇÒ ¼ö ÀÖ´Â
APPLICATION°ú ¸®Æ÷Æ®¸¦ ¾òÀ» ¼ö ÀÖ´Ù.




ÈÞ.. ±Ü¾î¼­ ºÙ¿©³õ°í º¸´Ï±î Á¤¸» ±æ´ç.. ^^;

ps. ¿À¶óŬÀ» ±âÁØÀ¸·Î ÇÑ ¼³¸íÀÌÁö¸¸, mysql¿¡¼­ sqlÀ» »ç¿ëÇÒ¶§µµ Àû¿ëµÇ´Â À̾߱âÀÔ´Ï´Ù.
Ýúîî 03-01-04 00:25 |»èÁ¦
À½...db ¿¡ ´ëÇÑ ³»°øÀ» À§Çؼ­¶óµµ ²À ºÁ¾ß°Ú±º¿ä.-_-;
°ÅºÎ±â 03-01-04 00:35 |»èÁ¦
°¨»çÇÕ´Ï´Ù....
devilhero 03-01-04 12:48 |»èÁ¦
ÀϺΠ±âº» °³³äÀº ¸ðµç µðºñ¿¡¼­ Àû¿ëÀÌ µÇ°Ú³×¿ä.
ÇÏÁö¸¸ ¿À¶óŬ ¸¸ÀÇ ÃÖÀûÈ­ ¹æ¹ýÀÌ ÀÖ´Â °Í ó·³ mysqlµµ ÀÖ½À´Ï´Ù. ±× ¹æ¹ýÀº mysql.com ÀÇ document ¿¡¼­ ã¾Æ º¼ ¼ö Àִµ¥ optimize ¶õÀ» º¸¸é ÄÄÆÄÀϽúÎÅÍ Å×ÀÌºí ½ºÅ°¸¶ ±¸¼º SQL ±îÁö ÀüºÐ¾ß¿¡ °ÉÃļ­ Àß ³ª¿ÍÀÖ½À´Ï´Ù. ¿µ¾î¶ó¼­ ºÒÆíÇϽðÚÁö¸¸ ´Ù¸¥ »ç¶÷º¸´Ù MySql À» °°Àº Çϵå¿þ¾î·Î °¡Àå ºü¸£°Ô »ç¿ëÇÏ°í ½ÍÀ¸½Å ºÐÀ̶ó¸é Çѹø Àо¼¼¿ä ^^
¾Ö´Ï 03-01-04 13:30 |»èÁ¦
Ãâó : http://www.coolzzin.com

ÀÌ ±ÛÀº SURESH AIYER¶ó´Â »ç¶÷ÀÌ ¾´ ±Û·Î  ¿À¶óŬ¿¡¼­ SQLÀ» È¿°úÀûÀ¸·Î ÀÛ¼º
Çϱâ À§ÇÑ ¿øÄ¢°ú ±â¹ýÀ» 25°¡Áö·Î Á¤¸®Çؼ­ DATABASE  PROGRAMMING & DESIGN
2002³âµµ 1¿ùÈ£¿¡ ¾´ ±ÛÀÔ´Ï´Ù.

´Ù¸¥°÷ÀÌ Ãâó·Î µÇ¾îÀִ°Š°°¾Æ¼­ ¿ø¹® ÁÖ¼Ò ¿Ã¸³´Ï´Ù.
Â÷â 03-01-13 11:19 |»èÁ¦
ÁÁÀº ÀÚ·áÀÔ´Ï´Ù °¨»ç ^^
°Ô½Ã¹° 11,975°Ç
¹øÈ£ ºÐ·ù Á¦¸ñ ±Û¾´ÀÌ ³¯Â¥ Á¶È¸
11,975 ¹ö±× Ç¢´çÇÑ Firefox ¹ö±× [9] ½Ã¿ìã¿éë 10-07-29 342
11,974 ÇÔ¼ö [PHP] Æ®À§ÅÍ(?) ó·³ ³¯Â¥µ¥ÀÌÅ͸¦ °£¼ÒÇÏ°Ô Ãâ·Â [8] ¿ì»çÀκ¼Æ® 10-07-24 640
11,973 ÇÔ¼ö [PHP5] CF Menu 0.1.1 ±×³× 10-07-22 617
11,972 ½ºÅ©¸³Æ® jquery ellipsys ÀÔ´Ï´Ù. [6] ¸Û±× 10-07-19 759
11,971 ½ºÅ©¸³Æ® [jquery] .live ¿¡¼­ change À̺¥Æ® »ç¿ëÇϱâ(²Ä¼öÀÓ) [5] Äðº¸À̱³¿ø 10-07-15 578
11,970 DBMS MSSQL > MySQL µ¥ÀÌÅÍ ÀÌÀü °ü·Ã 1¿ø Tip [1] AJ½ÄÀÌ´Ô 10-07-13 626
11,969 ½ºÅ©¸³Æ® DatePicker ³¯Â¥ Á¾·áÀÏ Ã¼Å©. [3] Äðº¸À̱³¿ø 10-07-12 503
11,968 Á¤º¸ ÇÑ±Û HWP ¹®¼­ÆÄÀÏ ¾ç½Ä °ø°³ [8] »ç¾ÇÇѹڴ븮 10-07-12 822
11,967 HTML CSS(CLASS)¸¦ »ç¿ëÇÑ SHOW , HIDE ¹æ¹ý [12] °ø´ë¿©ÀÚ 10-07-10 694
11,966 ½ºÅ©¸³Æ® [jQuery] datePicker ------ °¡´ÉÇÑ Á¾·áÀÏ Ã¼Å©[º¸¿Ï¼öÁ¤] [6] Äðº¸À̱³¿ø 10-07-09 471
11,965 Á¤º¸ ´ÙÀ½ ½Ç½Ã°£À̽´ °Ë»ö¾î XML Ãâ·ÂÇϱâ [5] Äí·¹ÀÌÁö½ß 10-07-08 707
11,964 ½ºÅ©¸³Æ® jquery ÀÚµ¿¿Ï¼º autocomplete ±â´É ½±°Ô Àû¿ëÇϱâ [6] Á¦ºÎµµ¼Ò³â 10-07-08 847
11,963 ¾Ë°í¸®Áò SOAP [4] ³ª´®À̶õ 10-07-07 682
11,962 ±âŸ ³×ÀÌÆ®¿Â ÇÁ·Ï½Ã ¼­¹ö ¼³Á¤Çϱâ (¹«·á) [2] °¡ºñ¸¸¼¼ 10-07-05 1007
11,961 ±âŸ ÇÁ·Ï½Ã ¼­¹ö (High anonymous) »ç¿ëÀÚ Ã¼Å© Çϱâ. [8] KzMJN 10-06-25 1040
11,960 ¼³Ä¡/¼³Á¤ [asp] ¾÷·Îµå ÄÄÆ÷³ÍÆ® (nfupload+freeaspupload) º½µ¹¤Ô 10-06-23 899
11,959 ÇÔ¼ö ½±°Ô ½±°Ô Xpath ÇÔ¼ö ´ÙÇÁ¸° 10-06-19 1127
11,958 ½ºÅ©¸³Æ® ajax(jquery) ¹«ÇÑ ½ºÅ©·Ñ ½ºÅ©·Ñ ³¡¿¡ °¡¸é ´ÙÀ½ µ¥ÀÌÅÍ ·Îµå [6] daniselseo 10-06-14 1829
11,957 ÇÔ¼ö °Ô½Ã¹°ÀÌ »è.Á¦. µÇ¾ú½À´Ï´Ù. [2] BiHon 10-06-09 1146
11,956 ÇÔ¼ö °Ô½Ã¹°ÀÌ »è.Á¦. µÇ¾ú½À´Ï´Ù. [13] BiHon 10-06-07 1617
ȸ»ç¼Ò°³ »çÀÌÆ®¸Ê ÀÌ¿ë¾à°ü °³ÀÎÁ¤º¸Ãë±Þ¹æÄ§ À̸ÞÀÏ ¹«´Ü¼öÁý °ÅºÎ ÀÎÀçä¿ë Á¦ÈÞ¹®ÀÇ ±¤°í¾È³»
(ÁÖ)ÇÇ¿¡ÀÌÄ¡ÇǽºÄð´åÄÄ »ç¾÷¹øÈ£ 119-86-25309 ÅëÆÇ 2010-¼­¿ï±Ýõ-0082È£ Á÷¾÷Á¤º¸ ¼­¿ï°ü¾Ç Á¦2010-03È£
¼­¿ï½Ã ±Ýõ±¸ °¡»êµ¿ 371-50 ¿¡À̽ºÇÏÀ̾صå3Â÷ 9Ãþ ´ëÇ¥ ÀÓ¼ºÁø °³ÀÎÁ¤º¸º¸È£Á¤Ã¥ ¹× ´ã´ç ÇϹÌÇâ
ÀüÈ­ 02-2627-6637 ÆÑ½º 02-2624-1371 E-mail member@phpschool.com
Copyright PHPSCHOOL.com All rights reserved.