|
|
[ÀϹÝ] INDEX »ç¿ëÇϱâ mssql,oracle,mysql |
|
È£¼® ´Ô²²¼ ¾´ ±ÛÀÔ´Ï´Ù - 121.¢½.39.7 |
ÀÐÀ½:5826 |
|
|
INDEX »ç¿ëÇϱâ
by kkaok
2003-06-24
À妽ºÀÇ È°¿ë
¸¸¾à ¿ì¸®°¡ ÁýÀ» Áþ´Âµ¥ Á¦ÀÏ ¸ÕÀú ÇØ¾ß ÇÒ ÀÏÀÌ ¹»±î? ±×°ÍÀº ¾Æ¸¶µµ ¼³°èÀÏ °ÍÀÌ´Ù. ±âÃÊ°¡ µÇ´Â ±âº» ¼³°è¸¦ Àß Çؾ߸¸ÀÌ ±× ÈÄ ÀÛ¾÷ÀÌ ¿øÈ°ÇÏ°í ÃÖÀûÈ°¡ µÇ´Â °ÍÀÌ´Ù.
ÇÁ·Î±×·¡¸Ó´Â java, servlet, jsp»Ó ¾Æ´Ï¶ó ÃÖ¼ÒÇÑÀÇ µ¥ÀÌÅͺ£À̽º¿¡ ´ëÇؼµµ ¾Ë¾Æ¾ß ÇÑ´Ù. °Ô½ÃÆÇ, Ä«¿îÅÍ, ÀÏÁ¤°ü¸® µîÀ» ¸¸µå´Âµ¥ DB ¼³°è¸¦ ´Ù¸¥ »ç¶÷ÀÌ ÇØÁÙ ¼öµµ ÀÖ°ÚÁö¸¸ ´ëºÎºÐÀÌ °³¹ßÀÚ°¡ ¼³°èÇÏ°í ¸¸µé±â ¶§¹®ÀÌ´Ù. ¿©±â¼´Â DB¿¡ ´ëÇØ ½Éµµ ±íÀº °øºÎ¸¦ ÇÒ ¼ö´Â ¾øÁö¸¸ ÃÖ¼ÒÇÑÀÇ Áö½Ä¿¡ ´ëÇØ ¹è¿ì±â·Î ÇÑ´Ù.
À妽º¶õ ¹«¾ùÀΰ¡?
SQL¼¹ö¿¡¼ Å×À̺íÀ» ¸¸µé°í µ¥ÀÌÅ͸¦ Ãß°¡, ¼öÁ¤, »èÁ¦ ÇÒ ¶§ µ¥ÀÌÅÍÀÇ ·¹ÄÚµå´Â ³»ºÎÀûÀ¸·Î ¾Æ¹«·± ¼ø¼ ¾øÀÌ ÀúÀåµÈ´Ù. À̶§ µ¥ÀÌÅÍ ÀúÀ念¿ªÀ» HeapÀ̶ó°í ÇÑ´Ù. Heap¿¡¼´Â À妽º°¡ ¾ø´Â Å×À̺íÀÇ µ¥ÀÌÅ͸¦ ãÀ» ¶§ ¹«Á¶°Ç Àüü µ¥ÀÌÅÍ ÆäÀÌÁöÀÇ Ã³À½ ·¹ÄÚµåºÎÅÍ ³¡ ÆäÀÌÁöÀÇ ¸¶Áö¸· ·¹ÄÚµå±îÁö ´Ù ÀÐ¾î¼ °Ë»öÁ¶°Ç°ú ºñ±³ÇÏ°Ô µÈ´Ù. ÀÌ·± ½ÄÀÇ µ¥ÀÌÅÍ °Ë»ö¹æ¹ýÀ» Å×ÀÌºí ½ºÄµ(table scan) ¶Ç´Â Ç® ½ºÄµ(full scan)À̶ó°í ÇÑ´Ù. ÀÌ·² °æ¿ì ¾çÀÌ ¸¹Àº Å×ÀÌºí¿¡¼ ÀϺκÐÀÇ µ¥ÀÌÅ͸¸ ºÒ·¯ ¿Ã ¶§ Ç® ½ºÄµÀ» Çϸé ó¸® ¼º´ÉÀÌ ¶³¾îÁø´Ù. Áï À妽º´Â µ¥ÀÌÅ͸¦ select ÇÒ ¶§ »¡¸® ã±â À§ÇØ »ç¿ëµÈ´Ù.
À妽º »ý¼º ½Ã °í·ÁÇÒ Á¡
À妽º¸¦ »ý¼º ½Ã¿¡´Â where Àý°ú join, order by µî°ú °ü·ÃµÈ Ä®·³Áß »ç¿ë ºóµµ°¡ ³ô°í Å° °ªÀÇ ¼±º°µµ°¡ ÁÁÀº Ä®·³¿¡ »ç¿ëÇØ¾ß ÇÑ´Ù. ¹Ý´ë·Î »ç¿ë ºóµµ°¡ ³·°í Ä®·³ÀÇ ¼±º°µµ°¡ ³ª»Û, ¿¹¸¦ µé¾î ÇÑ Ä®·³ÀÇ °ªÀÌ true/false, ¼ºº°(M/F) µî¿¡´Â À妽º¸¦ »ç¿ëÇÏÁö ¾Ê´Â °ÍÀÌ ÁÁ´Ù ¶Ç Å×À̺íÀÌ À۰ųª ÀÚÁÖ °»½Å µÉ ¶§µµ »ç¿ëÇÏÁö ¾Ê´Â °ÍÀÌ ÁÁ´Ù.
À妽ºÀÇ »ý¼º
À妽º¿¡´Â Å©°Ô clustered¿Í nonclustered À妽º·Î ³ª´ ¼ö ÀÖ´Ù. clustered À妽º´Â ¹°¸®Àû Á¤·Ä·Î DB¿¡ µ¥ÀÌÅ͸¦ ÀÔ·Â ½Ã ÀÌ°ÍÀ» ±âÁØÀ¸·Î ÀÔ·ÂÀÌ µÈ´Ù. µû¶ó¼ ÇÑ Å×ÀÌºí¿¡ ¿ÀÁ÷ Çϳª¸¸ Á¸Àç ÇÒ ¼ö ÀÖÀ¸¸ç tableÀ» ¿¾úÀ» ¶§ order by¸¦ »ç¿ëÇÏÁö ¾Ê¾Æµµ µ¥ÀÌÅÍ°¡ clustered À妽º¿¡ µû¶ó Á¤·ÄÀÌ µÇ¾î ÀÖ´Â °ÍÀ» È®ÀÎ ÇÒ ¼ö ÀÖ´Ù. ¹°¸®ÀûÀ¸·Î Á¤·ÄÀÌ µÇ¾î ÀÖ´Â ¸¸Å °¡Àå ºü¸¥ 󸮸¦ ÇÑ´Ù. nonclustered À妽º´Â clustered À妽º¿Í´Â ´Þ¸® Áߺ¹µÈ °ªÀ» °¡Áö¸é ÇÑ Å×ÀÌºí¿¡ ¿©·¯ °³¸¦ »ý¼º ÇÒ ¼ö ÀÖ´Ù. ÀÌ ¿Ü¿¡ unique¿¡ ´ëÇØ ¾Ë¾Æº¸°Ú´Ù. unique´Â ¸» ±×´ë·Î Áߺ¹À» Çã¿ëÇÏÁö ¾Ê´Â °ªÀ» º¸È£ ÇÒ ¶§ »ç¿ëÇÑ´Ù. ¿¹¸¦ µé¾î ȸ¿ø °ü¸® ÇÁ·Î±×·¥¿¡¼ ¾ÆÀ̵𰡠Áߺ¹µÇ´Â °ÍÀ» ¸·°íÀÚ ÇÑ´Ù¸é ÀÌ ¿É¼ÇÀ» »ç¿ëÇÏ¸é µÈ´Ù. ¿ì¸®°¡ ÀÚÁÖ »ç¿ëÇÏ´Â primary keyÀÇ °æ¿ì¿¡´Â clustered¿Í unique Ư¼ºÀ» °®°Ô ÇÏ´Â Á¦¾àÅ°ÀÌ´Ù.
¨ç mssql
À妽º»ý¼º ¹®¹ý
CREATE [UNIQUE] [CLUSTERED | NONCLUSTERED]
INDEX index_name ON table (column [,...n])
[WITH
[PAD_INDEX]
[[,] FILLFACTOR = fillfactor]
[[,] IGNORE_DUP_KEY]
[[,] DROP_EXISTING]
[[,] STATISTICS_NORECOMPUTE]
]
[ON filegroup]
À妽ºÀÇ »ý¼º ¿¹Á¦
create clustered index ix_kkaok on kkaok(seq)
width DROP_EXISTING, FILLFACTOR = 80
kkaok Å×ÀÌºí¿¡¼ seq Ä®·³¿¡ ´ëÇØ ix_kkaok¶ó´Â Ŭ·¯½ºÅ͵å À妽º¸¦ »ý¼ºÇ϶ó´Â ¸í·É¹®ÀÌ´Ù.
DROP_EXISTING ¿É¼ÇÀº ±âÁ¸¿¡ °°Àº À̸§ÀÇ À妽º°¡ Á¸ÀçÇÑ´Ù¸é »èÁ¦ÇÏ°í »ý¼ºÇ϶ó´Â ÀǹÌÀ̸ç Fillfactor °ªÀº ¸í½ÃÇÏÁö ¾ÊÀ¸¸é ±âº»ÀûÀ¸·Î 100% ÆäÀÌÁö¿¡ ä¿ö ³ÖÀ¸¶ó´Â ¶æÀÌ´Ù. Áö±ÝÀº 80% ä¿ö ³Ö°í 20% ¿©À¯°ø°£À» °¡Áö¶ó´Â ÀǹÌÀÌ´Ù.
°áÇÕ À妽ºÀÇ »ý¼º ¿¹Á¦
create index ix_kkaok2 on kkaok(seq,re_step)
seq¿Í re_step µÎ °³ÀÇ Ä®·³¿¡ À妽º¸¦ »ý¼ºÇÏ¿´´Ù. °¢°¢ÀÇ Ä®·³¿¡ ´ëÇØ ³»¸²Â÷¼ø Á¤·Ä°ú ¿À¸§Â÷¼ø Á¤·Ä ¿É¼ÇÀ» ÁÙ ¼ö ÀÖÁö¸¸ mssql 7.0¿¡¼´Â ³»¸²Â÷¼ø Á¤·ÄÀ» Áö¿øÇÏÁö ¾Ê´Â´Ù.
À妽º º¸±â
exec sp_helpindex 'Å×À̺íÀ̸§'
À妽º Á¦°Å
drop index 'table.index'[,...n]
À妽ºÀÇ »èÁ¦ ¿¹Á¦
drop index kkaok.ix_kkaok
Á¦¾àÅ°ÀÇ º¯°æ
primary key´Â À妽º°¡ ¾Æ´Ï°í Á¦¾àÅ°ÀÌ´Ù. µû¶ó¼ À妽º¸¦ »èÁ¦ÇÏ´Â ¹æ¹ýÀ¸·Î »èÁ¦ ÇÒ ¼ö´Â ¾ø´Ù. Á¦¾àÅ°´Â ´ÙÀ½ÀÇ ¹æ¹ýÀ¸·Î »èÁ¦ ¶Ç´Â º¯°æ ÇÒ ¼ö ÀÖ´Ù.
Á¦¾àÅ°ÀÇ »èÁ¦
alter table kkaok drop constraint PK_kkaok
Á¦¾àÅ°ÀÇ Ãß°¡º¯°æ
alter table kkaok add constraint PK_kkaok primary key(seq)
¨è oracle
À妽º»ý¼º ¹®¹ý
CREATE [BITMAP | UNIQUE]
INDEX index_name ON table (column[, column]...) ;
À妽ºÀÇ »ý¼º ¿¹Á¦
create unique index ix_kkaok_indx on kkaok(seq);
kkaok Å×ÀÌºí¿¡¼ unique ÇÑ °ªÀ¸·Î seq Ä®·³¿¡ ´ëÇØ ix_kkaok_indx¶ó´Â À妽º¸¦ »ý¼ºÇ϶ó´Â ¸í·É¹®ÀÌ´Ù.
°áÇÕ À妽ºÀÇ »ý¼º ¿¹Á¦
create index ix_kkaok_indx2 on kkaok(seq,re_step);
seq ¿Í re_step µÎ °³ÀÇ Ä®·³¿¡ À妽º¸¦ »ý¼ºÇÑ´Ù. °¢°¢ÀÇ Ä®·³¿¡ ´ëÇØ ³»¸²Â÷¼ø°ú ¿À¸§Â÷¼ø Á¤·Ä ¿É¼ÇÀ» ÁÙ ¼ö ÀÖÀ¸³ª hint¸¦ »ç¿ë½Ã Á¤·ÄÀÌ ¾ÈµÇ´Â °æ¿ì°¡ ÀÖ¾î¼ Á¤·Ä°ú °ü·ÃµÈ °ÍÀº hint¿¡¼ 󸮸¦ ÇÏ¸é µÈ´Ù.
À妽º º¸±â
select index_name, index_type from user_indexes;
À妽º Á¦°Å
drop index Àε¦¸í
À妽ºÀÇ »èÁ¦ ¿¹Á¦
drop index ix_kkaok_indx;
Á¦¾àÅ°ÀÇ »èÁ¦ ¿¹Á¦
alter table kkaok drop constraint kkaok_pk_re_step;
Á¦¾àÅ°ÀÇ Ãß°¡ ¿¹Á¦
alter table kkaok add constraint kkaok_pk_indx2 unique(seq);
¨é mysql
À妽º»ý¼º ¹®¹ý
BLOB°ú TEXT ŸÀÔÀ» Á¦¿ÜÇÑ ¸ðµç mysqlÀÇ Ä®·³ ŸÀÔÀº À妽º·Î »ç¿ëµÉ ¼ö ÀÖ´Ù. ÇÑ Å×ÀÌºí¿¡´Â 16°³ÀÇ À妽º¸¦ »ý¼ºÇÒ ¼ö ÀÖÀ¸¸ç ÃÖ´ë À妽ºÀÇ ±æÀÌ´Â 256¹ÙÀÌÆ®ÀÌ´Ù. ¶ÇÇÑ À妽º¿¡ »ç¿ëµÇ´Â Ä®·³Àº NOT NULLÀ̾î¾ß ÇÑ´Ù. À妽ºÀÇ »ý¼ºÀº Å×À̺íÀ» »ý¼ºÇÒ ¶§ ´ÙÀ½Ã³·³ »ý¼ºÇÏ¸é µÈ´Ù.
KEY [À妽º¸í] (col1(length),col2(length),...)
À妽ºÀÇ »ý¼º ¿¹Á¦
CREATE TABLE test (
id CHAR(20) NOT NULL,
name CHAR(200) NOT NULL,
PRIMARY KEY (id),
KEY index_name (name(200)));
À妽ºÀÇ Ãß°¡ ¿¹Á¦
ALTER TABLE test ADD INDEX index_id (id)
À妽º Á¦°Å
ALTER TABLE [Å×À̺í¸í] DROP INDEX [»èÁ¦ÇÒ À妽º¸í]
À妽ºÀÇ »èÁ¦ ¿¹Á¦
ALTER TABLE test DROP INDEX index_name
PRIMARY KEYÀÇ »èÁ¦
ALTER TABLE test DROP PRIMARY KEY
PRIMARY KEYÀÇ Ãß°¡
ALTER TABLE test ADD PRIMARY KEY (id)
|
|
|
|
|
|