[Oracle] ๐Ÿ’พ ์ธ๋ฑ์Šค (Index)

shrยท2022๋…„ 3์›” 2์ผ
0

Concept

๋ชฉ๋ก ๋ณด๊ธฐ
7/13
post-thumbnail

์ธ๋ฑ์Šค (Index)


DB ํ…Œ์ด๋ธ”์— ๋Œ€ํ•œ ๊ฒ€์ƒ‰ ์†๋„๋ฅผ ๋†’์ด๊ธฐ ์œ„ํ•ด ์‚ฌ์šฉํ•˜๋Š” ํ•˜๋‚˜์˜ ์ž๋ฃŒ ๊ตฌ์กฐ์ด๋‹ค. ํŠน์ • ์ปฌ๋Ÿผ์— ์ธ๋ฑ์Šค๋ฅผ ์ƒ์„ฑํ•˜๋ฉด, ํ•ด๋‹น ์ปฌ๋Ÿผ์˜ ๋ฐ์ดํ„ฐ๋“ค์„ ์ •๋ ฌํ•˜์—ฌ ๋ณ„๋„์˜ ๋ฉ”๋ชจ๋ฆฌ ๊ณต๊ฐ„์— ๋ฐ์ดํ„ฐ์˜ ๋ฌผ๋ฆฌ์  ์ฃผ์†Œ์™€ ํ•จ๊ป˜ ์ €์žฅ๋œ๋‹ค.


์œ„ ๊ทธ๋ฆผ๊ณผ ๊ฐ™์ด ์ธ๋ฑ์Šค๋ฅผ ํƒ€๊ณ , ๋จผ์ € ์ธ๋ฑ์Šค์— ์ €์žฅ๋˜์–ด ์žˆ๋Š” ๋ฐ์ดํ„ฐ์˜ ๋ฌผ๋ฆฌ์  ์ฃผ์†Œ๋กœ ๊ฐ€์„œ ๋ฐ์ดํ„ฐ๋ฅผ ๊ฐ€์ ธ์˜ค๋Š” ์‹์œผ๋กœ ๋™์ž‘ํ•œ๋‹ค.


์ธ๋ฑ์Šค์˜ ์žฅ์ 


์กฐ๊ฑด ๊ฒ€์ƒ‰ Where์ ˆ์˜ ํšจ์œจ์„ฑ

ํ…Œ์ด๋ธ”์˜ ๋ ˆ์ฝ”๋“œ๋Š” ์ˆœ์„œ ์—†์ด ์ €์žฅ๋˜๊ธฐ ๋•Œ๋ฌธ์— Where์ ˆ ํŠน์ • ์กฐ๊ฑด์— ๋งž๋Š” ๋ฐ์ดํ„ฐ๋“ค์„ ์ฐพ์•„๋‚ผ ๋•Œ๋„ ๋ ˆ์ฝ”๋“œ๋ฅผ ์ฒ˜์Œ๋ถ€ํ„ฐ ๋๊นŒ์ง€ ์ฝ์–ด์„œ ๋น„๊ตํ•ด์•ผ ํ•œ๋‹ค. ์ด๋ฅผ ํ’€ ํ…Œ์ด๋ธ” ์Šค์บ” (Full Table Scan)์ด๋ผ๊ณ  ํ•œ๋‹ค. ํ•˜์ง€๋งŒ ์ธ๋ฑ์Šค ํ…Œ์ด๋ธ”์€ ๋ฐ์ดํ„ฐ๋“ค์ด ์ •๋ ฌ๋˜์–ด ์žˆ๊ธฐ ๋•Œ๋ฌธ์— ์กฐ๊ฑด์— ๋งž๋Š” ๋ฐ์ดํ„ฐ๋“ค์„ ๋น ๋ฅด๊ฒŒ ์ฐพ์•„๋‚ผ ์ˆ˜ ์žˆ๋‹ค.

์ •๋ ฌ Order by์ ˆ์˜ ํšจ์œจ์„ฑ

Order by๋Š” ๋ถ€ํ•˜๊ฐ€ ๋งŽ์ด ๊ฑธ๋ฆฌ๋Š” ์ž‘์—…์ด๋‹ค. ์ธ๋ฑ์Šค๋ฅผ ์‚ฌ์šฉํ•˜๋ฉด ์ด๋ฏธ ์ •๋ ฌ์ด ๋˜์–ด ์žˆ๊ธฐ ๋•Œ๋ฌธ์—, Order by์— ์˜ํ•œ ์ •๋ ฌ ๊ณผ์ •์„ ํ”ผํ•  ์ˆ˜ ์žˆ๋‹ค.

MIN, MAX์˜ ํšจ์œจ์ ์ธ ์ฒ˜๋ฆฌ

MIN ๊ฐ’๊ณผ MAX ๊ฐ’์„ ๋ ˆ์ฝ”๋“œ์˜ ์‹œ์ž‘ ๊ฐ’๊ณผ ๋ ๊ฐ’ ํ•œ ๊ฑด์”ฉ๋งŒ ๊ฐ€์ ธ์˜ค๋ฉด ๋˜๊ธฐ ๋•Œ๋ฌธ์— ํ’€ ํ…Œ์ด๋ธ” ์Šค์บ”์œผ๋กœ ํ…Œ์ด๋ธ”์„ ๋ชจ๋‘ ์Šค์บ”ํ•˜๋Š” ๊ฒƒ๋ณด๋‹ค ํ›จ์”ฌ ํšจ์œจ์ ์œผ๋กœ ๊ฐ’์„ ์ฐพ์„ ์ˆ˜ ์žˆ๋‹ค.


์ธ๋ฑ์Šค์˜ ๋‹จ์ 


์ •๋ ฌ๋œ ์ƒํƒœ๋ฅผ ๊ณ„์† ์œ ์ง€์‹œ์ผœ์•ผ ํ•˜๋Š” ๊ฒƒ์ด ๋‹จ์ ์ด๋‹ค. insert, update, delete๋ฅผ ํ†ตํ•ด ๋ฐ์ดํ„ฐ์˜ ๊ฐ’์ด ๋ฐ”๋€๋‹ค๋ฉด ์ธ๋ฑ์Šค ํ…Œ์ด๋ธ” ๋‚ด์— ์žˆ๋Š” ๊ฐ’๋“ค๋„ ๋‹ค์‹œ ์ •๋ ฌํ•ด ์ฃผ์–ด์•ผ ํ•œ๋‹ค. ์ธ๋ฑ์Šค ํ…Œ์ด๋ธ”๊ณผ ์›๋ณธ ํ…Œ์ด๋ธ” ๋‘ ๊ตฐ๋ฐ์— ๋ฐ์ดํ„ฐ ์ˆ˜์ • ์ž‘์—…์„ ํ•ด ์ฃผ์–ด์•ผ ํ•˜๋Š” ๊ฒƒ์ด๋‹ค. ๋˜ํ•œ ์ธ๋ฑ์Šค๋ฅผ ๊ด€๋ฆฌํ•˜๊ธฐ ์œ„ํ•ด์„œ๋Š” DB์˜ ์•ฝ 10%์— ํ•ด๋‹นํ•˜๋Š” ์ €์žฅ ๊ณต๊ฐ„์ด ์ถ”๊ฐ€๋กœ ํ•„์š”ํ•˜๋‹ค.

๋งŽ์€ ์–‘์˜ ๋ฐ์ดํ„ฐ๋ฅผ ์ฒ˜๋ฆฌํ•  ๋•Œ ์„ฑ๋Šฅ ๋ฌธ์ œ๋ฅผ ์‰ฝ๊ฒŒ ํ•ด๊ฒฐํ•˜๊ธฐ ์œ„ํ•ด ๋ฌธ์ œ๊ฐ€ ์ƒ๊ธธ ๋•Œ๋งˆ๋‹ค ์ธ๋ฑ์Šค๋ฅผ ์ถ”๊ฐ€ํ•˜๋Š” ๊ฒƒ์€ ๋ฐ”๋žŒ์งํ•˜์ง€ ๋ชปํ•˜๋‹ค. ์ธ๋ฑ์Šค๊ฐ€ ๊ณ„์† ์ถ”๊ฐ€๋˜๋ฉด ์ธ๋ฑ์Šค๋ฅผ ์ฐธ์กฐํ•˜๋Š” ํ•˜๋‚˜์˜ ์ฟผ๋ฆฌ๋ฌธ์€ ๋น ๋ฅด๊ฒŒ ๋งŒ๋“ค ์ˆ˜ ์žˆ์„์ง€ ๋ชฐ๋ผ๋„ ์ „์ฒด์ ์ธ DB์˜ ์„ฑ๋Šฅ ๋ถ€ํ•˜๋ฅผ ์ดˆ๋ž˜ํ•˜๊ธฐ ๋•Œ๋ฌธ์ด๋‹ค. ๋”ฐ๋ผ์„œ ์ธ๋ฑ์Šค๋ฅผ ์ƒ์„ฑํ•˜๋Š” ๊ฒƒ๋ณด๋‹ค๋„ ์ฟผ๋ฆฌ๋ฌธ์„ ์กฐ๊ธˆ ๋” ํšจ์œจ์ ์œผ๋กœ ์งœ๋Š” ๊ฒƒ์„ ์ง€ํ–ฅํ•ด์•ผ ํ•œ๋‹ค. ์ธ๋ฑ์Šค ์ƒ์„ฑ์€ ๋งˆ์ง€๋ง‰ ์ˆ˜๋‹จ์œผ๋กœ ์ƒ๊ฐํ•˜๋Š” ๊ฒƒ์ด ์ข‹๋‹ค.


์ธ๋ฑ์Šค๋ฅผ ์–ด๋–ค ์ปฌ๋Ÿผ์— ๋งŒ๋“œ๋Š” ๊ฒŒ ์ข‹์„๊นŒ?


  • ์ค‘๋ณต๋˜๋Š” ๋ฐ์ดํ„ฐ๊ฐ€ ์ตœ์†Œํ•œ์ธ ์ปฌ๋Ÿผ (PK๋กœ ์ธ๋ฑ์Šค๋ฅผ ๊ฑธ๋ฉด ์ข‹๋‹ค.)
  • ์กฐ๊ฑด์ ˆ์— ์ž์ฃผ ํ˜ธ์ถœ๋˜๋Š” ์ปฌ๋Ÿผ
  • Order by์ ˆ์— ์ž์ฃผ ํ˜ธ์ถœ๋˜๋Š” ์ปฌ๋Ÿผ
  • ์กฐ์ธ ์กฐ๊ฑด์œผ๋กœ ์ž์ฃผ ํ˜ธ์ถœ๋˜๋Š” ์ปฌ๋Ÿผ

์ธ๋ฑ์Šค ์ƒ์„ฑ


-- ์ธ๋ฑ์Šค ์ƒ์„ฑ
CREATE INDEX [์ธ๋ฑ์Šค๋ช…] ON ํ…Œ์ด๋ธ”๋ช…(์ปฌ๋Ÿผ๋ช…)

-- ์ปฌ๋Ÿผ ๊ฐ’์— ์ค‘๋ณต ๊ฐ’์„ ํ—ˆ์šฉํ•˜์ง€ ์•Š๋Š” ์ธ๋ฑ์Šค ์ƒ์„ฑ
CREATE[UNIQUE] INDEX ์ธ๋ฑ์Šค๋ช… ON ํ…Œ์ด๋ธ”๋ช…(์ปฌ๋Ÿผ๋ช…); 

์ธ๋ฑ์Šค ์กฐํšŒ


SELECT * FROM USER_INDEXES WHERE TABLE_NAME = 'ํ…Œ์ด๋ธ”๋ช…';

์ƒ์„ฑํ•œ ์ธ๋ฑ์Šค๋Š” USER_INDEXES ์‹œ์Šคํ…œ ๋ทฐ์—์„œ ์กฐํšŒํ•  ์ˆ˜ ์žˆ๋‹ค.


์ธ๋ฑ์Šค ์‚ญ์ œ


DROP INDEX ์ธ๋ฑ์Šค๋ช…

์ฐธ๊ณ  ์ž๋ฃŒ


SQL ์ธ๋ฑ์Šค(INDEX) ๋œป๊ณผ ์›๋ฆฌ ์ดํ•ดํ•˜๊ธฐ(์˜ค๋ผํด, MS-SQL)
[DB] ๋ฐ์ดํ„ฐ๋ฒ ์ด์Šค ์ธ๋ฑ์Šค(Index) ๋ž€ ๋ฌด์—‡์ธ๊ฐ€?

profile
๋ชปํ•˜๋‹ค ๋ณด๋ฉด ์ž˜ํ•˜๊ฒŒ ๋˜๋Š” ๊ฑฐ์•ผ ๏ฝฅแด—๏ฝฅฬฅฬฅฬฅ

0๊ฐœ์˜ ๋Œ“๊ธ€