°úÁ¤¸ñÀû

º» °úÁ¤¿¡¼­´Â ÀϹÝÀûÀ¸·Î »ç¿ëµÇ´Â ´Ù¸¥ µ¥ÀÌÅͺ£À̽º °´Ã¼ Áß ÀϺθ¦ »ý¼ºÇÏ°í À¯ÁöÇÏ´Â ¹ýÀ» ¹è¿ì°Ô µË´Ï´Ù. ÀÌ °´Ã¼´Â ½ÃÄö½º , À妽º, µ¿ÀǾ Æ÷ÇÔÇÕ´Ï´Ù.

 

µ¥ÀÌÅͺ£À̽º °´Ã¼

¸¹Àº ¾îÇø®ÄÉÀ̼ǵéÀº À¯ÀÏÇÑ ¼ýÀÚ °ªÀ» ±âº» Å° °ªÀ¸·Î »ç¿ëÇÕ´Ï´Ù. ÀÌ ¿ä±¸»çÇ×À» ó¸®Çϱâ À§ÇØ Äڵ带 ¾îÇø®ÄÉÀ̼ǿ¡¼­ ±¸ÃàÇϰųª À¯ÀÏÇÑ ¹øÈ£¸¦ »ý¼ºÇϱâ À§ÇØ ½ÃÄö½º¸¦ »ç¿ëÇÒ ¼ö ÀÖ½À´Ï´Ù.

ÀϺΠÁúÀÇÀÇ ¼º´ÉÀ» Çâ»ó½ÃÅ°±æ ¿øÇÑ´Ù¸é, À妽ºÀÇ »ý¼ºÀ» °í·ÁÇØ¾ß ÇÕ´Ï´Ù.  ¶ÇÇÑ  ¿­ ¶Ç´Â ¿­ÁýÇÕ¿¡¼­ À¯ÀϼºÀ» °­È­½ÃÅ°±â À§ÇØ À妽º¸¦ »ç¿ëÇÒ ¼ö ÀÖ½À´Ï´Ù. µ¿ÀǾ »ç¿ëÇÏ¿© °´Ã¼¸¦ À§ÇÑ ´ëü¸íÀ» Á¦°øÇÒ ¼ö ÀÖ½À´Ï´Ù.

 

À妽º¶õ?

¿À¶óŬ ¼­¹ö À妽º´Â Æ÷ÀÎÅ͸¦ »ç¿ëÇÏ¿© ÇàÀÇ °Ë»öÀ» ÃËÁøÇÒ ¼ö ÀÖ´Â ½ºÅ°¸¶ °´Ã¼ÀÔ´Ï´Ù. À妽º´Â ¸í½ÃÀûÀ¸·Î  ¶Ç´Â ÀÚµ¿ÀûÀ¸·Î »ý¼ºµÉ ¼ö ÀÖ½À´Ï´Ù. ¿­¿¡¼­ À妽º¸¦ °¡Áö°í ÀÖÁö ¾Ê´Ù¸é, À̶§´Â Àüü Å×ÀÌºí ½ºÄµ(scan)ÀÌ ¹ß»ýÇÒ °Í ÀÔ´Ï´Ù.

À妽º´Â Å×À̺íÀÇ Çà¿¡ ´ëÇØ Á÷Á¢ÀûÀÌ°í  ºü¸¥ ¾×¼¼½º¸¦ Á¦°øÇÕ´Ï´Ù. ÀÌ°ÍÀÇ ¸ñÀûÀº  ºü¸£°Ô µ¥ÀÌÅ͸¦ ã±â À§ÇØ À妽º µÈ °æ·Î¸¦ »ç¿ëÇÏ¿© µð½ºÅ© I/OÀÇ Çʿ伺À» °æ°¨½ÃÅ°´Â °Í ÀÔ´Ï´Ù. À妽º´Â ¿À¶óŬ ¼­¹ö¿¡ ÀÇÇØ ÀÚµ¿ÀûÀ¸·Î »ç¿ëµÇ°í À¯ÁöµË´Ï´Ù. Çѹø À妽º°¡ »ý¼ºµÇ¸é , »ç¿ëÀÚ¿¡°Ô ¿ä±¸µÇ´Â Á÷Á¢ÀûÀÎ ÀÛ¾÷Àº ¾ø½À´Ï´Ù. À妽º´Â ±×µéÀÌ À妽ºÇÑ Å×ÀÌºí¿¡ ´ëÇØ ³í¸®ÀûÀ¸·Î ¹°¸®ÀûÀ¸·Î µ¶¸³ÀûÀÔ´Ï´Ù. Áï À妽º´Â  ¾î´À ¶§¿¡³ª »ý¼ºµÇ°Å³ª Á¦°ÅµÉ ¼ö ÀÖ°í ±âº» Å×ÀÌºí ¶Ç´Â ´Ù¸¥ À妽º¿¡ ¿µÇâÀÌ ¾øÀ½À» ÀǹÌÇÕ´Ï´Ù.

ÁÖ: Å×À̺íÀ» Á¦°ÅÇßÀ» ¶§, ÇØ´ç À妽ºµµ ¿ª½Ã Á¦°ÅµË´Ï´Ù.

ÀÚ¼¼ÇÑ ³»¿ëÀº Oracle Server Concepts Manual, Release 7.3 ¶Ç´Â 8.0, ¡°Schema Objects¡± section, ¡°Indexes¡± topicÀ» ÂüÁ¶ÇϽʽÿÀ.

À妽º¸¦ »ý¼ºÇÏ´Â ¹æ¹ýÀº?

2°¡Áö ŸÀÔÀÇ À妽º°¡ »ý¼ºµÉ ¼ö ÀÖ½À´Ï´Ù. ÇÑ Å¸ÀÔÀº À¯ÀÏÇÑ À妽ºÀÔ´Ï´Ù. ¿À¶óŬ ¼­¹ö´Â  PRIMARY Key ¶Ç´Â UNIQUE Key Á¦¾àÁ¶°ÇÀ» °¡Áö±â À§ÇØ Å×ÀÌºí¿¡¼­ ¿­À» Á¤ÀÇÇÒ ¶§ ÀÚµ¿À¸·Î ÀÌ À妽º¸¦ »ý¼ºÇÕ´Ï´Ù.

»ç¿ëÀÚ°¡ »ý¼ºÇÒ ¼ö ÀÖ´Â ´Ù¸¥ ŸÀÔÀÇ À妽º´Â À¯ÀÏÇÏÁö ¾ÊÀº À妽ºÀÔ´Ï´Ù. ¿¹¸¦ µé¸é, °Ë»ö ¼Óµµ¸¦ Çâ»ó½ÃÅ°Å° À§ÇØ ÁúÀÇ ¾ÈÀÇ Á¶ÀÎÀ» À§ÇÑ FOREIGN KEY ¿­ À妽º¸¦ »ý¼ºÇÒ ¼ö ÀÖ½À´Ï´Ù.

 

À妽º »ý¼º

CREATE INDEX ¹®ÀåÀ» »ý¼ºÇÔÀ¸·Î½á Çϳª ÀÌ»óÀÇ ¿­ÀÇ À妽º¸¦ »ý¼ºÇÕ´Ï´Ù.

±¸¹®¿¡¼­:

        index                  À妽ºÀÇ À̸§ÀÔ´Ï´Ù.
        table                   Å×À̺íÀÇ À̸§ÀÔ´Ï´Ù.
        column               À妽º µÇ±â À§ÇÑ Å×À̺íÀÇ ¿­ À̸§ÀÔ´Ï´Ù.

ÀÚ¼¼ÇÑ ³»¿ëÀ» º¸½Ã·Á¸é
Oracle Server SQL Reference, Release 7.3 ¶Ç´Â 8.0, ¡°CREATE INDEX.¡±¸¦ ÂüÁ¶ÇϽʽÿÀ.

¸¹Àº °ÍÀÌ Ç×»ó ´õ ÁÁÀº °ÍÀº ¾Æ´Ï´Ù.

Å×À̺íÀÇ ¸¹Àº À妽º°¡ ÁúÀÇÀÇ ½ºÇǵå Çâ»óÀ» ²À ÀǹÌÇÏ´Â °ÍÀº ¾Æ´Õ´Ï´Ù. À妽º¸¦ °¡Áö°í  ÀÖ´Â Å×ÀÌºí¿¡ ´ëÇÑ °¢ DML ÀÛ¾÷Àº À妽ºµµ °»½ÅµÇ¾î¾ß ÇÔÀ» ÀǹÌÇÕ´Ï´Ù. ¸¹Àº À妽º°¡ Å×À̺í°ú °ü·ÃµÇ¾î ÀÖÀ¸¸é, ¿À¶óŬ ¼­¹ö´Â DML ÈÄ¿¡ ¸ðµç À妽º¸¦ °»½Å½ÃÅ°±â À§ÇØ ´õ ¸¹Àº ³ë·ÂÀÌ ÇÊ¿äÇÏ°Ô µË´Ï´Ù.

¾ðÁ¦ À妽º¸¦ »ý¼ºÇϴ°¡?

  • ¿­Àº WHERE Àý ¶Ç´Â Á¶ÀÎ Á¶°Ç¿¡¼­ ÀÚÁÖ »ç¿ëµË´Ï´Ù.
  • ¿­Àº ±¤¹üÀ§ÇÑ °ªÀ» Æ÷ÇÔÇÕ´Ï´Ù.
  • ¿­Àº ¸¹Àº ¼öÀÇ null °ªÀ» Æ÷ÇÔÇÕ´Ï´Ù.
  • µÑ ¶Ç´Â ÀÌ»óÀÇ ¿­Àº WHERE Àý ¶Ç´Â Á¶ÀÎ Á¶°Ç¿¡¼­ ÀÚÁÖ ÇÔ²² »ç¿ëµË´Ï´Ù.
  • Å×À̺íÀº ´ëÇüÀÌ°í ´ëºÎºÐÀÇ ÁúÀǵéÀº ÇàÀÇ 2-4%º¸´Ù Àû°Ô ÀоîµéÀÏ °ÍÀ¸·Î ¿¹»óµË´Ï´Ù.

À¯ÀϼºÀ» °­ÇàÇϱ⸦ ¿øÇÑ´Ù¸é, Å×À̺í Á¤ÀÇ¿¡ À¯ÀÏÇÑ Á¦¾àÁ¶°ÇÀ» Á¤ÀÇÇØ¾ß ÇÔÀ» ¸í½É ÇϽʽÿÀ. À̶§ À¯ÀÏÇÑ À妽º´Â ÀÚµ¿À¸·Î »ý¼ºµË´Ï´Ù.

 

¾ðÁ¦ À妽º¸¦ »ý¼ºÇؼ­´Â ¾ÈµÇ´Â°¡

 

À妽º È®ÀÎ

USER_INDEXES µ¥ÀÌÅÍ »çÀü ºä¿¡¼­ À妽ºÀÇ Á¸À縦 È®ÀÎÇÕ´Ï´Ù. ¶ÇÇÑUSER_IND_COLUMNS ºä¸¦ ÁúÀÇÇÔÀ¸·Î½á À妽º¿¡ °ü°èµÈ ¿­À» È®ÀÎÇÕ´Ï´Ù. À§ÀÇ ¿¹´Â EMP Å×ÀÌºí¿¡¼­ ÀÌÀü¿¡ »ý¼ºµÈ À妽º, °ü·Ã À̸§, À¯Àϼº ¸ðµÎ¸¦ µð½ºÇ÷¹ÀÌÇÕ´Ï´Ù

INDEX_NAME         COLUMN_NAME     COL_POS UNIQUENES
-----------------  --------------- ------- ----------
EMP_EMPNO_PK       EMPNO                 1 UNIQUE
EMP_ENAME_IDX      ENAME                 1 NONUNIQUE

ÁÖ: À§ÀÇ Ãâ·ÂÀº Æ÷¸ËµÇ¾ú½À´Ï´Ù.

ÇÔ¼ö ±â¹Ý À妽º

UPPER(column_name) ¶Ç´Â LOWER(column_name) Å°¿öµå·Î Á¤ÀÇµÈ ÇÔ¼ö ±â¹Ý À妽º¸¦ »ç¿ëÇÏ¸é ´ë¼Ò¹®ÀÚ ±¸ºÐ ¾øÀÌ °Ë»öÇÒ ¼ö ÀÖ½À´Ï´Ù. ¿¹¸¦ µé¾î, ´ÙÀ½ À妽º´Â

  SQL> CREATE INDEX uppercase_idx ON emp (UPPER(ename));

´ÙÀ½°ú °°Àº ÁúÀǸ¦ ó¸®ÇÕ´Ï´Ù.

    SQL> SELECT * FROM emp WHERE UPPER(ename) = 'KING';

Àüü Å×À̺íÀ» ½ºÄµÇÏ´Â ´ë½Å À妽º¸¦ »ç¿ëÇÏ·Á¸é ÀÌÈÄ ÁúÀÇÀÇ ÇÔ¼ö °ªÀÌ ³ÎÀÌ ¾Æ´Ï¾î¾ß ÇÕ´Ï´Ù. ¿¹¸¦ µé¾î, ´ÙÀ½ ¸í·É¹®Àº À妽º¸¦ »ç¿ëÇϵµ·Ï µÇ¾î ÀÖÁö¸¸ where ÀýÀÌ ¾øÀ¸¸é OracleÀÌ Àüü Å×À̺íÀ» ½ºÄµÇÕ´Ï´Ù.

  SQL> SELECT * FROM emp

      2  WHERE UPPER (ename) IS NOT NULL

      3  ORDER BY UPPER (ename);

OracleÀº ¿­¿¡ DESC°¡ Ç¥½ÃµÈ À妽º¸¦ ÇÔ¼ö ±â¹Ý À妽º·Î ó¸®ÇÕ´Ï´Ù. DESC°¡ Ç¥½ÃµÈ ¿­Àº ³»¸²Â÷¼øÀ¸·Î Á¤·ÄµË´Ï´Ù.

 

À妽º Á¦°Å

À妽º¸¦ ¼öÁ¤ÇÒ ¼ö ¾ø½À´Ï´Ù. À妽º¸¦ º¯°æÇϱâ À§Çؼ­´Â, ±×°ÍÀ» Á¦°ÅÇÏ°í ´Ù½Ã ÀÛ¼ºÇØ¾ß ÇÕ´Ï´Ù. DROP INDEX ¹®ÀåÀ» »ý¼ºÇÏ¿© µ¥ÀÌÅÍ »çÀü¿¡¼­ À妽º Á¤ÀǸ¦ Á¦°ÅÇÕ´Ï´Ù. À妽º¸¦ Á¦°ÅÇϱâ À§Çؼ­´Â À妽ºÀÇ ¼ÒÀ¯ÀÚÀ̰ųª DROP ANY INDEX ±ÇÇÑÀ» °¡Áö°í ÀÖ¾î¾ß ÇÕ´Ï´Ù.

±¸¹®¿¡¼­

        index                    À妽ºÀÇ À̸§ÀÔ´Ï´Ù.

 emp tableÀÇ ¸ðµç column¿¡ ´ëÇÏ¿© nonunique index°¡ »ý¼ºµÇ¾î ÀÖ´Ù°í ÇÒ ¶§, ´ÙÀ½ ¹®ÀåÀ» ½ÇÇàÇÒ °æ¿ì ¾î¶² columnÀÇ index°¡ »ç¿ëµÇ°Ú´Â°¡?
SELECT empno, ename, sal, deptno
FROM emp
WHERE deptno = 30
ORDER BY sal, ename;
A. empno
B. ename
C. sal
D. deptno
´ä

X Á¤´ä:D


X Á¤´ä:D


X Á¤´ä:C