|
À妽º¶õ?
¿À¶óŬ ¼¹ö À妽º´Â Æ÷ÀÎÅ͸¦ »ç¿ëÇÏ¿© ÇàÀÇ °Ë»öÀ» ÃËÁøÇÒ ¼ö ÀÖ´Â ½ºÅ°¸¶ °´Ã¼ÀÔ´Ï´Ù. À妽º´Â ¸í½ÃÀûÀ¸·Î ¶Ç´Â ÀÚµ¿ÀûÀ¸·Î »ý¼ºµÉ ¼ö ÀÖ½À´Ï´Ù. ¿¿¡¼ À妽º¸¦ °¡Áö°í ÀÖÁö ¾Ê´Ù¸é, À̶§´Â Àüü Å×ÀÌºí ½ºÄµ(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%º¸´Ù Àû°Ô ÀоîµéÀÏ °ÍÀ¸·Î ¿¹»óµË´Ï´Ù.
À¯ÀϼºÀ» °ÇàÇϱ⸦ ¿øÇÑ´Ù¸é, Å×À̺í Á¤ÀÇ¿¡ À¯ÀÏÇÑ Á¦¾àÁ¶°ÇÀ» Á¤ÀÇÇØ¾ß ÇÔÀ» ¸í½É ÇϽʽÿÀ. À̶§ À¯ÀÏÇÑ À妽º´Â ÀÚµ¿À¸·Î »ý¼ºµË´Ï´Ù.
¾ðÁ¦ À妽º¸¦ »ý¼ºÇؼ´Â ¾ÈµÇ´Â°¡
Å×À̺íÀÌ ÀÛ´Ù.
¿ÀÌ ÁúÀÇÀÇ Á¶°ÇÀ¸·Î ÀÚÁÖ »ç¿ëµÇÁö ¾Ê´Â´Ù.
´ëºÎºÐÀÇ ÁúÀǵéÀº ÇàÀÇ 2-4%ÀÌ»óÀ» ÀоîµéÀÏ °ÍÀ¸·Î ¿¹»óµÈ´Ù.
Å×À̺íÀº ÀÚÁÖ °»½ÅµË´Ï´Ù. Å×ÀÌºí¿¡ Çϳª ÀÌ»ó À妽º¸¦ °¡Áö°í ÀÖ´Ù¸é Å×À̺íÀ» ¾×¼¼½ºÇÏ´Â DML ¹®ÀåÀº À妽ºÀÇ À¯Áö ¶§¹®¿¡ »ó´ëÀûÀ¸·Î ´õ ¸¹Àº ½Ã°£ÀÌ °É¸®°Ô µË´Ï´Ù.
À妽º È®ÀÎ
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 ±ÇÇÑÀ» °¡Áö°í ÀÖ¾î¾ß ÇÕ´Ï´Ù.
|