๋ณธ๋ฌธ ๋ฐ”๋กœ๊ฐ€๊ธฐ
Computer Science/Database

21 Index

by Dowon Kang 2024. 1. 17.

์ธ๋ฑ์Šค(Index)๋Š” ๋ฐ์ดํ„ฐ๋ฒ ์ด์Šค์—์„œ ๊ฒ€์ƒ‰ ์†๋„๋ฅผ ํ–ฅ์ƒ์‹œํ‚ค๊ธฐ ์œ„ํ•ด ์‚ฌ์šฉ๋˜๋Š” ๋ฐ์ดํ„ฐ ๊ตฌ์กฐ๋กœ, ํŠน์ • ์—ด(๋˜๋Š” ์—ฌ๋Ÿฌ ์—ด)์— ๋Œ€ํ•œ ์ •๋ ฌ๋œ ํ‚ค์™€ ํ•ด๋‹น ํ‚ค๊ฐ€ ๊ฐ€๋ฆฌํ‚ค๋Š” ์‹ค์ œ ๋ฐ์ดํ„ฐ ๋ ˆ์ฝ”๋“œ์˜ ์œ„์น˜๋ฅผ ๋งคํ•‘ํ•ฉ๋‹ˆ๋‹ค. ์ธ๋ฑ์Šค๋Š” ๋ฐ์ดํ„ฐ๋ฒ ์ด์Šค์˜ ๊ฒ€์ƒ‰ ์—ฐ์‚ฐ ์†๋„๋ฅผ ํ–ฅ์ƒ์‹œํ‚ค๊ณ  ์ฟผ๋ฆฌ ์„ฑ๋Šฅ์„ ์ตœ์ ํ™”ํ•˜๋Š” ๋ฐ ๋„์›€์ด ๋ฉ๋‹ˆ๋‹ค.


์ธ๋ฑ์Šค์˜ ์ฃผ์š” ํŠน์ง•๊ณผ ์—ญํ• 

  1. ๊ฒ€์ƒ‰ ์†๋„ ํ–ฅ์ƒ: ์ธ๋ฑ์Šค๋ฅผ ์‚ฌ์šฉํ•˜๋ฉด ๋ฐ์ดํ„ฐ๋ฒ ์ด์Šค ์—”์ง„์€ ๊ฒ€์ƒ‰ ์กฐ๊ฑด์— ๋งž๋Š” ๋ ˆ์ฝ”๋“œ๋ฅผ ๋น ๋ฅด๊ฒŒ ์ฐพ์„ ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค. ํŠนํžˆ ๋Œ€๋Ÿ‰์˜ ๋ฐ์ดํ„ฐ๊ฐ€ ์žˆ๋Š” ํ…Œ์ด๋ธ”์—์„œ ํŠน์ • ์กฐ๊ฑด์— ๋”ฐ๋ฅธ ๊ฒ€์ƒ‰์„ ์ˆ˜ํ–‰ํ•  ๋•Œ ์œ ์šฉํ•ฉ๋‹ˆ๋‹ค.
  2. ์ •๋ ฌ ๋ฐ ์œ ์ผ์„ฑ ์œ ์ง€: ์ธ๋ฑ์Šค๋Š” ํŠน์ • ์—ด์— ๋Œ€ํ•ด ์ •๋ ฌ๋œ ์ˆœ์„œ๋กœ ๋ฐ์ดํ„ฐ๋ฅผ ์œ ์ง€ํ•˜๋ฉฐ, ํ•„์š”์— ๋”ฐ๋ผ ํ•ด๋‹น ์—ด์˜ ๊ฐ’์ด ์œ ์ผํ•˜๋„๋ก ์œ ์ง€ํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค. ์ด๋Š” ์ฃผ๋กœ ๊ธฐ๋ณธ ํ‚ค๋‚˜ ๊ณ ์œ  ์ œ์•ฝ ์กฐ๊ฑด์— ์‚ฌ์šฉ๋ฉ๋‹ˆ๋‹ค.
  3. ์กฐ์ธ ์„ฑ๋Šฅ ํ–ฅ์ƒ: ์ธ๋ฑ์Šค๋Š” ์กฐ์ธ ์—ฐ์‚ฐ์„ ์ตœ์ ํ™”ํ•˜๋Š” ๋ฐ ๋„์›€์ด ๋ฉ๋‹ˆ๋‹ค. ์—ฌ๋Ÿฌ ํ…Œ์ด๋ธ” ๊ฐ„์˜ ๊ด€๊ณ„์—์„œ ์กฐ์ธ ์—ฐ์‚ฐ์€ ์ธ๋ฑ์Šค๋ฅผ ํ™œ์šฉํ•˜์—ฌ ๋” ํšจ์œจ์ ์œผ๋กœ ์ˆ˜ํ–‰๋  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค.
  4. WHERE ์กฐ๊ฑด ์ตœ์ ํ™”: ์ธ๋ฑ์Šค๋Š” WHERE ์กฐ๊ฑด์—์„œ ์‚ฌ์šฉ๋˜๋Š” ์—ด์— ๋Œ€ํ•œ ๊ฒ€์ƒ‰์„ ์ตœ์ ํ™”ํ•˜๋Š” ๋ฐ ํšจ๊ณผ์ ์ž…๋‹ˆ๋‹ค. ์ด๋Š” ํŠนํžˆ SELECT ๋ฌธ์—์„œ WHERE ์ ˆ์ด ์ž์ฃผ ์‚ฌ์šฉ๋˜๋Š” ๊ฒฝ์šฐ ์œ ์šฉํ•ฉ๋‹ˆ๋‹ค.

 


 

B-ํŠธ๋ฆฌ(B-tree) ๊ตฌ์กฐ๋ฅผ ๊ธฐ๋ฐ˜์œผ๋กœ ํ•˜๋Š” ์ธ๋ฑ์Šค

๋งŽ์€ ๋ฐ์ดํ„ฐ๋ฒ ์ด์Šค ๊ด€๋ฆฌ ์‹œ์Šคํ…œ(DBMS)์—์„œ๋Š” B-ํŠธ๋ฆฌ(B-tree) ๊ตฌ์กฐ๋ฅผ ๊ธฐ๋ฐ˜์œผ๋กœ ํ•˜๋Š” ์ธ๋ฑ์Šค๋ฅผ ์‚ฌ์šฉํ•ฉ๋‹ˆ๋‹ค. B-ํŠธ๋ฆฌ๋Š” ๋ฐ์ดํ„ฐ๋ฅผ ํšจ์œจ์ ์œผ๋กœ ์ •๋ ฌํ•˜๊ณ  ํƒ์ƒ‰ํ•˜๊ธฐ ์œ„ํ•œ ํŠธ๋ฆฌ ๊ตฌ์กฐ์˜ ๋ฐ์ดํ„ฐ ๊ตฌ์กฐ๋กœ, ์ž์ฃผ ์‚ฌ์šฉ๋˜๋Š” ๋ฐ์ดํ„ฐ๋ฒ ์ด์Šค ์ธ๋ฑ์Šค์˜ ๊ธฐ๋ณธ ๊ตฌ์กฐ ์ค‘ ํ•˜๋‚˜์ž…๋‹ˆ๋‹ค.


๋Œ€ํ‘œ์ ์œผ๋กœ MySQL, PostgreSQL, Oracle, SQL Server ๋“ฑ์˜ ๋ฐ์ดํ„ฐ๋ฒ ์ด์Šค ์‹œ์Šคํ…œ์—์„œ๋Š” B-ํŠธ๋ฆฌ ๊ธฐ๋ฐ˜์˜ ์ธ๋ฑ์Šค๋ฅผ ๊ธฐ๋ณธ์œผ๋กœ ์ œ๊ณตํ•˜๊ณ  ์žˆ์Šต๋‹ˆ๋‹ค. ๊ทธ๋Ÿฌ๋‚˜ ๋ช‡๋ช‡ ๋ฐ์ดํ„ฐ๋ฒ ์ด์Šค์—์„œ๋Š” ํŠน์ • ์ƒํ™ฉ์ด๋‚˜ ์š”๊ตฌ์— ๋”ฐ๋ผ ๋‹ค๋ฅธ ์ธ๋ฑ์Šค ๊ตฌ์กฐ๋ฅผ ์„ ํƒํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค.

 

 

๋ฌด๋ฆฌํ•˜๊ฒŒ ๋งŽ์€ ์ธ๋ฑ์Šค ์ƒ์„ฑ์˜ ๋‹จ์ 

๊ทธ๋Ÿฌ๋‚˜ ์ธ๋ฑ์Šค๋ฅผ ์‚ฌ์šฉํ•  ๋•Œ๋Š” ๋ช‡ ๊ฐ€์ง€ ๊ณ ๋ ค ์‚ฌํ•ญ์ด ์žˆ์Šต๋‹ˆ๋‹ค. ์ธ๋ฑ์Šค๋Š” ๋ฐ์ดํ„ฐ ์‚ฝ์ž…, ์ˆ˜์ •, ์‚ญ์ œ ์ž‘์—…์— ์˜ํ–ฅ์„ ๋ฏธ์น  ์ˆ˜ ์žˆ์œผ๋ฉฐ, ๊ณผ๋„ํ•œ ์ธ๋ฑ์Šค ์ƒ์„ฑ์€ ๋””์Šคํฌ ๊ณต๊ฐ„์„ ๋‚ญ๋น„ํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค. ์ ์ ˆํ•œ ์ธ๋ฑ์Šค ์ „๋žต์„ ์„ ํƒํ•˜๊ณ  ์œ ์ง€๋ณด์ˆ˜ํ•˜๋Š” ๊ฒƒ์ด ์ค‘์š”ํ•ฉ๋‹ˆ๋‹ค.

  • table์— writeํ•  ๋•Œ๋งˆ๋‹ค index๋„ ๋ณ€๊ฒฝ ๋ฐœ์ƒ
  • ์ถ”๊ฐ€์ ์ธ ์ €์žฅ ๊ณต๊ฐ„ ์ฐจ์ง€

 

 

Covering Index (์ปค๋ฒ„๋ง ์ธ๋ฑ์Šค)

Covering Index๋Š” ์ฟผ๋ฆฌ์˜ ์‹คํ–‰์„ ์œ„ํ•ด ํ•„์š”ํ•œ ๋ชจ๋“  ๋ฐ์ดํ„ฐ๋ฅผ ์ธ๋ฑ์Šค ์ž์ฒด์—์„œ ์ œ๊ณตํ•˜๋Š” ์ธ๋ฑ์Šค์˜ ํ˜•ํƒœ๋ฅผ ๋‚˜ํƒ€๋ƒ…๋‹ˆ๋‹ค. ์ฆ‰, ์ปค๋ฒ„๋ง ์ธ๋ฑ์Šค๋Š” ์ฟผ๋ฆฌ์˜ ๊ฒฐ๊ณผ๋ฅผ ๊ฐ€์ ธ์˜ค๊ธฐ ์œ„ํ•ด ๋””์Šคํฌ์—์„œ ํ…Œ์ด๋ธ”๋กœ ์ด๋™ํ•˜์ง€ ์•Š๊ณ ๋„ ์ธ๋ฑ์Šค๋งŒ์œผ๋กœ ์›ํ•˜๋Š” ์ •๋ณด๋ฅผ ์ œ๊ณตํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค.

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

  • ๊ฒ€์ƒ‰ ์„ฑ๋Šฅ ํ–ฅ์ƒ: ํ…Œ์ด๋ธ”์— ๋Œ€ํ•œ ๋””์Šคํฌ I/O๋ฅผ ํ”ผํ•˜๊ณ  ์ธ๋ฑ์Šค๋งŒ์œผ๋กœ ์›ํ•˜๋Š” ๊ฒฐ๊ณผ๋ฅผ ์–ป์„ ์ˆ˜ ์žˆ์œผ๋ฏ€๋กœ ๊ฒ€์ƒ‰ ์„ฑ๋Šฅ์ด ํ–ฅ์ƒ๋ฉ๋‹ˆ๋‹ค.
  • ๋ฐ์ดํ„ฐ ์ „์†ก ์ตœ์†Œํ™”: ํ•„์š”ํ•œ ๋ฐ์ดํ„ฐ๊ฐ€ ์ด๋ฏธ ์ธ๋ฑ์Šค์— ์กด์žฌํ•˜๊ธฐ ๋•Œ๋ฌธ์— ๋ถˆํ•„์š”ํ•œ ๋ฐ์ดํ„ฐ ์ „์†ก์ด ์ตœ์†Œํ™”๋˜์–ด ๋„คํŠธ์›Œํฌ ๋น„์šฉ๊ณผ ๋Œ€์—ญํญ์„ ์ ˆ์•ฝํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค.

 

 

ํ•ด์‹œ ์ธ๋ฑ์Šค(Hash Index)

ํ•ด์‹œ ์ธ๋ฑ์Šค(Hash Index)๋Š” ํ•ด์‹œ ํ•จ์ˆ˜๋ฅผ ์‚ฌ์šฉํ•˜์—ฌ ๋ฐ์ดํ„ฐ๋ฅผ ์ €์žฅํ•˜๊ณ  ๊ฒ€์ƒ‰ํ•˜๋Š” ์ธ๋ฑ์Šค ๊ตฌ์กฐ์ž…๋‹ˆ๋‹ค. ํ•ด์‹œ ํ•จ์ˆ˜๋Š” ๊ณ ์œ ํ•œ ์ž…๋ ฅ์— ๋Œ€ํ•ด ๊ณ ์œ ํ•œ ํ•ด์‹œ ๊ฐ’์„ ์ƒ์„ฑํ•˜๋Š” ํ•จ์ˆ˜๋กœ, ์ด ํ•ด์‹œ ๊ฐ’์„ ์‚ฌ์šฉํ•˜์—ฌ ๋ฐ์ดํ„ฐ๋ฅผ ์ €์žฅํ•˜๊ณ  ๊ฒ€์ƒ‰ํ•ฉ๋‹ˆ๋‹ค. ํ•ด์‹œ ์ธ๋ฑ์Šค๋Š” ํŠนํžˆ ๋“ฑ ๊ฐ’์ด ์ผ์น˜ํ•˜๋Š” ๊ฒฝ์šฐ์— ๊ฒ€์ƒ‰์ด ๋น ๋ฅด๊ฒŒ ์ด๋ฃจ์–ด์ง€๋Š” ํŠน์„ฑ์ด ์žˆ์Šต๋‹ˆ๋‹ค.

ํ•ด์‹œ ์ธ๋ฑ์Šค์˜ ํŠน์ง•๊ณผ ๋™์ž‘ ๋ฐฉ์‹

  1. ๊ณ ์† ๊ฒ€์ƒ‰
  2. ๋“ฑ ๊ฐ’ ์ฒ˜๋ฆฌ: ํ•ด์‹œ ์ธ๋ฑ์Šค๋Š” ๋“ฑ ๊ฐ’(๋™์ผํ•œ ํ•ด์‹œ ๊ฐ’)์„ ๊ฐ€์ง„ ๋ฐ์ดํ„ฐ๋ฅผ ์ฒ˜๋ฆฌํ•  ๋•Œ ์œ ์šฉ
  3. ๋“ฑ ๊ฐ’ ์ถฉ๋Œ: ํ•ด์‹œ ํ•จ์ˆ˜๊ฐ€ ์„œ๋กœ ๋‹ค๋ฅธ ์ž…๋ ฅ์— ๋Œ€ํ•ด ๊ฐ™์€ ํ•ด์‹œ ๊ฐ’์„ ์ƒ์„ฑํ•  ์ˆ˜ ์žˆ๋Š” ์ถฉ๋Œ์ด ๋ฐœ์ƒํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค.
  4. ๋ฒ”์œ„ ๊ฒ€์ƒ‰์˜ ์–ด๋ ค์›€: ํ•ด์‹œ ์ธ๋ฑ์Šค๋Š” ํŠน์ • ๊ฐ’์— ๋Œ€ํ•œ ๊ฒ€์ƒ‰์— ํšจ๊ณผ์ ์ด์ง€๋งŒ, ๋ฒ”์œ„ ๊ฒ€์ƒ‰(์˜ˆ: "๋ฒ”์œ„ ๋‚ด์˜ ๊ฐ’ ์ฐพ๊ธฐ")์—๋Š” ์ ํ•ฉํ•˜์ง€ ์•Š์Šต๋‹ˆ๋‹ค. 

์ฃผ์˜ํ•  ์ ์€ ํ•ด์‹œ ์ธ๋ฑ์Šค๋Š” ์ฃผ๋กœ ๋“ฑ ๊ฐ’ ์ฒ˜๋ฆฌ๊ฐ€ ๋งŽ์€ ๊ฒฝ์šฐ๋‚˜ ํŠน์ • ๊ฒ€์ƒ‰ ํŒจํ„ด์ด ์˜ˆ์ธก ๊ฐ€๋Šฅํ•œ ๊ฒฝ์šฐ์— ์œ ์šฉํ•˜๋ฉฐ, ๋ฐ์ดํ„ฐ์˜ ๋ถ„ํฌ์™€ ์ถฉ๋Œ์— ๋Œ€ํ•œ ๊ด€๋ฆฌ๊ฐ€ ํ•„์š”ํ•ฉ๋‹ˆ๋‹ค. ์ผ๋ถ€ ๋ฐ์ดํ„ฐ๋ฒ ์ด์Šค์—์„œ๋Š” InnoDB์™€ ๊ฐ™์€ ์Šคํ† ๋ฆฌ์ง€ ์—”์ง„์—์„œ๋Š” ํ•ด์‹œ ์ธ๋ฑ์Šค๋ฅผ ์ง€์›ํ•˜์ง€ ์•Š๊ฑฐ๋‚˜ ์ œํ•œ์ ์œผ๋กœ ์ง€์›ํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค.

 

 

 


An index is a data structure in a database that enhances the speed of data retrieval operations on a table by providing a quick and efficient way to locate and access specific rows based on the values in one or more columns.

 

'Computer Science > Database' ์นดํ…Œ๊ณ ๋ฆฌ์˜ ๋‹ค๋ฅธ ๊ธ€

25 NoSQL  (0) 2024.01.18
20 Normalization  (0) 2024.01.16
12 Trigger  (0) 2024.01.13
9 ORDER BY, GROUP BY (feat. HAVING)  (0) 2024.01.12
8 JOIN  (0) 2024.01.12

๋Œ“๊ธ€