๋ณธ๋ฌธ ๋ฐ”๋กœ๊ฐ€๊ธฐ
๐Ÿ’ป Computer Science/๋ฐ์ดํ„ฐ๋ฒ ์ด์Šค

[๋ฐ์ดํ„ฐ๋ฒ ์ด์Šค] ์ธ๋ฑ์Šค(Index) ๋ž€?

by Jay Din 2023. 11. 29.
728x90
๋ฐ˜์‘ํ˜•

์ธ๋ฑ์Šค(Index) ๋ž€?

์ธ๋ฑ์Šค(Index)๋Š” ๋ฐ์ดํ„ฐ๋ฒ ์ด์Šค์—์„œ ํŠน์ • ์—ด(์นผ๋Ÿผ)์˜ ๊ฒ€์ƒ‰ ์„ฑ๋Šฅ์„ ํ–ฅ์ƒ์‹œํ‚ค๊ธฐ ์œ„ํ•ด ์‚ฌ์šฉ๋˜๋Š” ๋ฐ์ดํ„ฐ ๊ตฌ์กฐ์ž…๋‹ˆ๋‹ค.

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

 

Index๊ฐ€ ํ•„์š”ํ•œ ์ด์œ 

Index๋Š” ๋ฐ์ดํ„ฐ๋ฒ ์ด์Šค์—์„œ table์˜ ๊ฒ€์ƒ‰ ์„ฑ๋Šฅ์„ ๋†’์—ฌ์ฃผ๋Š” ๋Œ€ํ‘œ์ ์ธ ๋ฐฉ๋ฒ• ์ค‘ ํ•˜๋‚˜์ž…๋‹ˆ๋‹ค.

์ผ๋ฐ˜์ ์ธ RDBMS(๊ด€๊ณ„ํ˜•๋ฐ์ดํ„ฐ๋ฒ ์ด์Šค)์—์„œ๋Š” B+Tree๊ตฌ์กฐ๋กœ ๋œ index๋ฅผ ์‚ฌ์šฉํ•˜์—ฌ ๊ฒ€์ƒ‰์†๋„๋ฅผ ํ–ฅ์ƒ์‹œํ‚ต๋‹ˆ๋‹ค.

 

index๋Š” ์ฑ…๋งˆ๋‹ค ๋งˆ์ง€๋ง‰ ํŽ˜์ด์ง€์— ์žˆ๋Š” ์ƒ‰์ธ(index)๊ณผ ๊ฐ™์€ ์—ญํ• ์„ ํ•˜๋Š” ์ž๋ฃŒ๊ตฌ์กฐ์ž…๋‹ˆ๋‹ค.

์ฑ…์—์„œ ์–ด๋–ค ์šฉ์–ด๋‚˜ ๋‹จ์–ด๋ฅผ ์ฐพ๊ธฐ ์œ„ํ•ด ์ฒซ ํŽ˜์ด์ง€๋ถ€ํ„ฐ ๋ ํŽ˜์ด์ง€๊นŒ์ง€ ์ „์ฒด๋ฅผ ํ›‘์ง€ ์•Š์•„๋„(Full Table Scan) index๋ฅผ ์ฐพ์•„๋ณด๋ฉด ๋ช‡ ํŽ˜์ด์ง€์— ์ ํ˜€ ์žˆ๋Š”์ง€ ๋ฐ”๋กœ ์ฐพ์„ ์ˆ˜ ์žˆ๋Š” ๊ฒƒ(Index Scan)๊ณผ ๋น„์Šทํ•ฉ๋‹ˆ๋‹ค.

 

SELECT ~ WHERE query๋ฅผ ํ†ตํ•ด ํŠน์ • ์กฐ๊ฑด์„ ๋งŒ์กฑํ•˜๋Š” ๋ฐ์ดํ„ฐ๋ฅผ ์ฐพ์„ ๋•Œ, full table scanํ•  ํ•„์š” ์—†์ด ์ •๋ ฌ๋˜์–ด ์žˆ๋Š” index์—์„œ ํ›จ์”ฌ ๋น ๋ฅธ ์†๋„๋กœ ๊ฒ€์ƒ‰ํ•  ์ˆ˜ ์žˆ๊ฒŒ ๋ฉ๋‹ˆ๋‹ค.

 

Index ๊ตฌ์กฐ

Index๋Š” Btree, B+tree, Hash, Bitmap๋กœ ๊ตฌํ˜„๋  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค.

๋งŽ์€ ๋ฐ์ดํ„ฐ๋ฒ ์ด์Šค ์‹œ์Šคํ…œ์—์„œ index๋Š” B+tree๊ตฌ์กฐ๋ฅผ ๊ฐ€์ง‘๋‹ˆ๋‹ค.

index๋ฅผ ์ƒ์„ฑํ•˜๊ฒŒ ๋˜๋ฉด ํŠน์ • column(์†์„ฑ, attribute)์˜ ๊ฐ’์„ ๊ธฐ์ค€์œผ๋กœ ์ •๋ ฌํ•˜์—ฌ ๋ฐ์ดํ„ฐ์˜ ๋ฌผ๋ฆฌ์  ์œ„์น˜์™€ ํ•จ๊ป˜ ๋ณ„๋„ ํŒŒ์ผ์— ์ €์žฅํ•ฉ๋‹ˆ๋‹ค.

์ด ๋•Œ, Index์— ์ €์žฅ๋˜๋Š” ์†์„ฑ ๊ฐ’์„ search-key๊ฐ’์ด๋ผ ํ•˜๊ณ  ์‹ค์ œ ๋ฐ์ดํ„ฐ์˜ ๋ฌผ๋ฆฌ์  ์œ„์น˜๋ฅผ ์ €์žฅํ•œ ๊ฐ’์„ pointer๋ผ๊ณ  ํ•ฉ๋‹ˆ๋‹ค.

์ฆ‰, index๋Š” ์ˆœ์„œ๋Œ€๋กœ ์ •๋ ฌ๋œ search-key๊ฐ’๊ณผ pointer๊ฐ’๋งŒ ์ €์žฅํ•˜๊ธฐ ๋•Œ๋ฌธ์— table๋ณด๋‹ค ์ ์€ ๊ณต๊ฐ„์„ ์ฐจ์ง€ํ•ฉ๋‹ˆ๋‹ค.

์ •๋ฆฌํ•ด๋ณด๋ฉด ํŠน์ • column์„ search-key ๊ฐ’์œผ๋กœ ์„ค์ •ํ•˜์—ฌ index๋ฅผ ์ƒ์„ฑํ•˜๋ฉด, ํ•ด๋‹น search-key ๊ฐ’์„ ๊ธฐ์ค€์œผ๋กœ ์ •๋ ฌํ•˜์—ฌ (search-key, pointer)๋ฅผ ๋ณ„๋„ ํŒŒ์ผ์— ์ €์žฅํ•ฉ๋‹ˆ๋‹ค.

์ด๋ฅผ index๋ผ๊ณ  ํ•ฉ๋‹ˆ๋‹ค.

 

Index ์‚ฌ์šฉํ•˜๋Š” ์ด์œ 

Table์— ๋ฐ์ดํ„ฐ๋ฅผ ์ง€์†์ ์œผ๋กœ ์ €์žฅํ•˜๊ฒŒ ๋˜๋ฉด ๋‚ด๋ถ€์ ์œผ๋กœ ์ˆœ์„œ ์—†์ด ์Œ“์ด๊ฒŒ ๋ฉ๋‹ˆ๋‹ค.

์ด ๊ฒฝ์šฐ์— ํŠน์ • ์กฐ๊ฑด์„ ๋งŒ์กฑํ•˜๋Š” ๋ฐ์ดํ„ฐ๋ฅผ ์ฐพ๊ณ ์ž WHERE์ ˆ์„ ์‚ฌ์šฉํ•œ๋‹ค๋ฉด Table์˜ row(record)๋ฅผ ์ฒ˜์Œ๋ถ€ํ„ฐ ๋๊นŒ์ง€ ๋ชจ๋‘ ์ ‘๊ทผํ•˜์—ฌ ๊ฒ€์ƒ‰ ์กฐ๊ฑด๊ณผ ์ผ์น˜ํ•˜๋Š”์ง€ ๋น„๊ตํ•˜๋Š” ๊ณผ์ •์ด ํ•„์š”ํ•ฉ๋‹ˆ๋‹ค.

์ด๋ฅผ Full Table Scan์ด๋ผ๊ณ  ํ•ฉ๋‹ˆ๋‹ค.

ํ•˜์ง€๋งŒ ํŠน์ • coloumn์— ๋Œ€ํ•œ Index๋ฅผ ์ƒ์„ฑํ•ด ๋†“์€ ๊ฒฝ์šฐ ํ•ด๋‹น ์†์„ฑ์— ๋Œ€ํ•˜์—ฌ search-key๊ฐ€ ์ •๋ ฌ๋˜์–ด ์ €์žฅ๋˜์–ด ์žˆ๊ธฐ ๋•Œ๋ฌธ์— ์กฐ๊ฑด ๊ฒ€์ƒ‰(SELECT ~ WHERE) ์†๋„๊ฐ€ ๊ต‰์žฅํžˆ ๋น ๋ฆ…๋‹ˆ๋‹ค.

 

ํด๋Ÿฌ์Šคํ„ฐํ˜• ์ธ๋ฑ์Šค์™€ ๋ณด์กฐ ์ธ๋ฑ์Šค(clustering index & secondary index)

ํด๋Ÿฌ์Šคํ„ฐํ˜• ์ธ๋ฑ์Šค
(clustering index)
ํŠน์ • column์„ ๊ธฐ๋ณธํ‚ค(primary key)๋กœ ์ง€์ •ํ•˜๋ฉด ์ž๋™์œผ๋กœ ํด๋Ÿฌ์Šคํ„ฐํ˜• ์ธ๋ฑ์Šค๊ฐ€ ์ƒ์„ฑ๋˜๊ณ ,
ํ•ด๋‹น column ๊ธฐ์ค€์œผ๋กœ ์ •๋ ฌ์ด ๋ฉ๋‹ˆ๋‹ค.
Table ์ž์ฒด๊ฐ€ ์ •๋ ฌ๋œ ํ•˜๋‚˜์˜ index์ธ ๊ฒƒ์ž…๋‹ˆ๋‹ค. ๋งˆ์น˜ ์˜์–ด์‚ฌ์ „์ฒ˜๋Ÿผ ์ฑ…์˜ ๋‚ด์šฉ ์ž์ฒด๊ฐ€ ์ •๋ ฌ๋œ ๊ฒƒ์„ ๋– ์˜ฌ๋ฆฌ๋ฉด ์‰ฝ์Šต๋‹ˆ๋‹ค.
๋ณด์กฐ ์ธ๋ฑ์Šค
(secondary index)
์ผ๋ฐ˜ ์ฑ…์˜ ์ฐพ์•„๋ณด๊ธฐ์™€ ๊ฐ™์ด ๋ณ„๋„์˜ ๊ณต๊ฐ„์— ์ธ๋ฑ์Šค๊ฐ€ ์ƒ์„ฑ๋ฉ๋‹ˆ๋‹ค.
create index์™€ ๊ฐ™์ด index๋ฅผ ์ƒ์„ฑํ•˜๊ธฐ๋ฅผ ํ•˜๊ฑฐ๋‚˜ ๊ณ ์œ ํ‚ค(unique key)๋กœ ์ง€์ •ํ•˜๋ฉด ๋ณด์กฐ ์ธ๋ฑ์Šค๊ฐ€ ์ƒ์„ฑ๋ฉ๋‹ˆ๋‹ค.

 

Index ์žฅ์ 

์ธ๋ฑ์Šค์˜ ์ตœ๋Œ€ ์žฅ์ ์€ ๊ฒ€์ƒ‰ ์†๋„ ํ–ฅ์ƒ (SELECT~WHERE~) ์ž…๋‹ˆ๋‹ค.

ํ…Œ์ด๋ธ”์„ ๋งŒ๋“ค๊ณ  ์•ˆ์— ๋ฐ์ดํ„ฐ๊ฐ€ ์Œ“์ด๊ฒŒ ๋˜๋ฉด ํ…Œ์ด๋ธ”์˜ record๋Š” ๋‚ด๋ถ€์ ์œผ๋กœ ์ˆœ์„œ๊ฐ€ ์—†์ด ๋’ค์ฃฝ๋ฐ•์ฃฝ์œผ๋กœ ์ €์žฅ๋ฉ๋‹ˆ๋‹ค.

์ด๋ ‡๊ฒŒ ๋˜๋ฉด WHERE์ ˆ์„ ํ†ตํ•ด ํŠน์ • ์กฐ๊ฑด์— ๋งž๋Š” ๋ฐ์ดํ„ฐ๋“ค์„ ์ฐพ์•„๋‚ผ ๋•Œ์—๋„ record์˜ ์ฒ˜์Œ๋ถ€ํ„ฐ ๋๊นŒ์ง€ ๋‹ค ์ฝ์–ด์„œ ๊ฒ€์ƒ‰ ์กฐ๊ฑด๊ณผ ๋งž๋Š”์ง€ ๋น„๊ตํ•ด์•ผ ํ•ฉ๋‹ˆ๋‹ค. ์ด๊ฒƒ์„ Full Table Scan์ด๋ผ๊ณ  ํ•ฉ๋‹ˆ๋‹ค.

๋ฐ˜๋ฉด์— index๋ฅผ ์ƒ์„ฑํ•˜๋ฉด index์—๋Š” ๋ฐ์ดํ„ฐ๋“ค์ด ์ •๋ ฌ๋˜์–ด ์ €์žฅ๋˜์–ด ์žˆ๊ธฐ ๋•Œ๋ฌธ์— ๊ฒ€์ƒ‰ ์กฐ๊ฑด์— ์ผ์น˜ํ•˜๋Š” ๋ฐ์ดํ„ฐ๋“ค์„ ๋น ๋ฅด๊ฒŒ ์ฐพ์•„๋‚ผ ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค. ์ด๊ฒƒ์ด Index๋ฅผ ์‚ฌ์šฉํ•˜๋Š” ๊ฐ€์žฅ ํฐ ์ด์œ ์ž…๋‹ˆ๋‹ค.

 

๋ฐ์ดํ„ฐ ๊ฒ€์ƒ‰ ์†๋„ ํ–ฅ์ƒ

๊ฐ€์žฅ ์ค‘์š”ํ•œ ์žฅ์  ์ค‘ ํ•˜๋‚˜๋Š” ๊ฒ€์ƒ‰ ์†๋„์˜ ํ–ฅ์ƒ์ž…๋‹ˆ๋‹ค.

์ธ๋ฑ์Šค๋Š” ํŠน์ • ์—ด(์นผ๋Ÿผ)์— ๋Œ€ํ•œ ์ •๋ ฌ๋œ ๋ฐ์ดํ„ฐ ์„ธํŠธ๋ฅผ ์ œ๊ณตํ•˜๋ฏ€๋กœ ๊ฒ€์ƒ‰ ์—ฐ์‚ฐ์ด ๋น ๋ฅด๊ฒŒ ์ˆ˜ํ–‰๋ฉ๋‹ˆ๋‹ค.

ํŠนํžˆ ๋Œ€์šฉ๋Ÿ‰์˜ ๋ฐ์ดํ„ฐ๋ฒ ์ด์Šค์—์„œ๋Š” ์ธ๋ฑ์Šค๋ฅผ ์‚ฌ์šฉํ•˜๋ฉด ์ „์ฒด ํ…Œ์ด๋ธ”์„ ์Šค์บ”ํ•˜์ง€ ์•Š๊ณ ๋„ ์›ํ•˜๋Š” ๋ฐ์ดํ„ฐ์— ๋น ๋ฅด๊ฒŒ ์ ‘๊ทผํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค.

๋ฒ”์œ„ ๊ฒ€์ƒ‰ ์„ฑ๋Šฅ ํ–ฅ์ƒ

์ •๋ ฌ๋œ ๋ฐ์ดํ„ฐ๋ฅผ ๊ฐ–๋Š” ์ธ๋ฑ์Šค๋Š” ๋ฒ”์œ„ ๊ฒ€์ƒ‰(ํŠน์ • ๊ฐ’ ์‚ฌ์ด์˜ ๋ฒ”์œ„์—์„œ ๋ฐ์ดํ„ฐ ๊ฒ€์ƒ‰)์— ๋งค์šฐ ํšจ๊ณผ์ ์ž…๋‹ˆ๋‹ค.

์ด๋Š” BETWEEN, >, <์™€ ๊ฐ™์€ ์—ฐ์‚ฐ์—์„œ ์„ฑ๋Šฅ์„ ํฌ๊ฒŒ ํ–ฅ์ƒ์‹œํ‚ต๋‹ˆ๋‹ค.

์œ ๋‹ˆํฌํ•œ ๊ฐ’ ๊ด€๋ฆฌ

์œ ๋‹ˆํฌํ•œ ์ œ์•ฝ ์กฐ๊ฑด์„ ๊ฐ–๋Š” ์ธ๋ฑ์Šค๋Š” ์ค‘๋ณต๋œ ๊ฐ’์„ ํ—ˆ์šฉํ•˜์ง€ ์•Š์Šต๋‹ˆ๋‹ค.

์ด๋Š” ๋ฐ์ดํ„ฐ ๋ฌด๊ฒฐ์„ฑ์„ ์œ ์ง€ํ•˜๊ณ  ์‹ค์ˆ˜๋กœ ์ค‘๋ณต ๋ฐ์ดํ„ฐ๊ฐ€ ์ž…๋ ฅ๋˜๋Š” ๊ฒƒ์„ ๋ฐฉ์ง€ํ•˜๋Š”๋ฐ ๋„์›€์„ ์ค๋‹ˆ๋‹ค.

์ •๋ ฌ๋œ ๊ฒฐ๊ณผ ๋ฐ˜ํ™˜

๋ช‡๋ช‡ ๋ฐ์ดํ„ฐ๋ฒ ์ด์Šค๋Š” ์ธ๋ฑ์Šค๋ฅผ ์‚ฌ์šฉํ•˜์—ฌ ๋ฐ์ดํ„ฐ๋ฅผ ์ •๋ ฌ๋œ ์ƒํƒœ๋กœ ์ €์žฅํ•˜๋ฏ€๋กœ, ORDER BY์™€ ๊ฐ™์€ ์ •๋ ฌ๋œ ๊ฒฐ๊ณผ๋ฅผ ์š”๊ตฌํ•˜๋Š” ์ฟผ๋ฆฌ์˜ ์„ฑ๋Šฅ์ด ํ–ฅ์ƒ๋ฉ๋‹ˆ๋‹ค.

์ฟผ๋ฆฌ ์ตœ์ ํ™”

๋ฐ์ดํ„ฐ๋ฒ ์ด์Šค ์˜ตํ‹ฐ๋งˆ์ด์ €๋Š” ์ธ๋ฑ์Šค๋ฅผ ํ™œ์šฉํ•˜์—ฌ ์ฟผ๋ฆฌ ์‹คํ–‰ ๊ณ„ํš์„ ์ตœ์ ํ™”ํ•ฉ๋‹ˆ๋‹ค.

์ด๋ฅผ ํ†ตํ•ด ๋ฐ์ดํ„ฐ๋ฅผ ํšจ์œจ์ ์œผ๋กœ ๊ฐ€์ ธ์˜ค๊ณ  ์ฒ˜๋ฆฌํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค.

์กฐ์ธ ์„ฑ๋Šฅ ํ–ฅ์ƒ

์กฐ์ธ ์—ฐ์‚ฐ์—์„œ ์ธ๋ฑ์Šค๋ฅผ ์‚ฌ์šฉํ•˜๋ฉด ์กฐ์ธ ์กฐ๊ฑด์˜ ๊ฒ€์ƒ‰ ์†๋„๊ฐ€ ํ–ฅ์ƒ๋˜์–ด ์ „์ฒด ์ฟผ๋ฆฌ ์„ฑ๋Šฅ์ด ํ–ฅ์ƒ๋ฉ๋‹ˆ๋‹ค.

๋ฐ์ดํ„ฐ๋ฒ ์ด์Šค ์„ฑ๋Šฅ ์ผ๋ฐ˜์ ์ธ ํ–ฅ์ƒ

์ธ๋ฑ์Šค๋ฅผ ํšจ๊ณผ์ ์œผ๋กœ ์‚ฌ์šฉํ•˜๋ฉด ์ „๋ฐ˜์ ์ธ ๋ฐ์ดํ„ฐ๋ฒ ์ด์Šค ์„ฑ๋Šฅ์ด ํ–ฅ์ƒ๋ฉ๋‹ˆ๋‹ค.

์ฟผ๋ฆฌ์˜ ์‘๋‹ต์‹œ๊ฐ„์ด ๋‹จ์ถ•๋˜๊ณ , ์‹œ์Šคํ…œ ์ž์›์ด ํšจ์œจ์ ์œผ๋กœ ์‚ฌ์šฉ๋ฉ๋‹ˆ๋‹ค.

์“ฐ๊ธฐ ์ž‘์—…์— ๋Œ€ํ•œ ์ตœ์ ํ™”

์ผ๋ถ€ ๋ฐ์ดํ„ฐ๋ฒ ์ด์Šค๋Š” ์ธ๋ฑ์Šค๋ฅผ ์‚ฌ์šฉํ•˜์—ฌ ์“ฐ๊ธฐ ์ž‘์—…์˜ ์„ฑ๋Šฅ์„ ์ตœ์ ํ™”ํ•˜๋Š” ๊ธฐ๋Šฅ์„ ์ œ๊ณตํ•ฉ๋‹ˆ๋‹ค.

์ด๋Š” ์ธ๋ฑ์Šค์˜ ์œ ํ˜• ๋ฐ ์„ค์ •์— ๋”ฐ๋ผ ๋‹ค๋ฅผ ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค.

ํ…Œ์ด๋ธ” ํŒ๋ณ„์„ฑ ๊ฐ•ํ™”

์ธ๋ฑ์Šค ํŠน์ • ์—ด์— ๋Œ€ํ•œ ๋น ๋ฅธ ๊ฒ€์ƒ‰์„ ์ œ๊ณตํ•˜๋ฏ€๋กœ, ํ…Œ์ด๋ธ”์˜ ํŒ๋ณ„์„ฑ(๋ถ„๋ฅ˜ ๋˜๋Š” ๊ตฌ๋ถ„๋ ฅ)์„ ๊ฐ•ํ™”ํ•ฉ๋‹ˆ๋‹ค.

 

Index ๋‹จ์ 

์ธ๋ฑ์Šค๋Š” ๊ฒ€์ƒ‰ ์„ฑ๋Šฅ์„ ํ–ฅ์ƒ์‹œํ‚ค๋Š” ๋“ฑ ๋งŽ์€ ์ด์ ์„ ์ œ๊ณตํ•˜์ง€๋งŒ, ๋‹จ์ ๋“ค์„ ๊ณ ๋ คํ•˜์—ฌ ๋ฐ์ดํ„ฐ๋ฒ ์ด์Šค ์ธ๋ฑ์Šค๋ฅผ ์‹ ์ค‘ํ•˜๊ฒŒ ์„ค๊ณ„ํ•˜๊ณ  ๊ด€๋ฆฌํ•ด์•ผ ํ•ฉ๋‹ˆ๋‹ค.

์ธ๋ฑ์Šค์˜ ์‚ฌ์šฉ์€ ํŠน์ •ํ•œ ์ƒํ™ฉ๊ณผ ์š”๊ตฌ์‚ฌํ•ญ์— ๋งž๊ฒŒ ์กฐ์ ˆ๋˜์–ด์•ผ ํ•˜๋ฉฐ, ํ•„์š”ํ•˜์ง€ ์•Š์€ ์ธ๋ฑ์Šค๋Š” ์‚ญ์ œํ•˜์—ฌ ์ž์›์„ ํšจ๊ณผ์ ์œผ๋กœ ๊ด€๋ฆฌํ•ด์•ผ ํ•ฉ๋‹ˆ๋‹ค.

 

์“ฐ๊ธฐ ์„ฑ๋Šฅ ์ €ํ•˜

์ธ๋ฑ์Šค๋ฅผ ์ƒ์„ฑํ•˜๋ฉด ํ…Œ์ด๋ธ”์— ์ƒˆ๋กœ์šด ๋ฐ์ดํ„ฐ๋ฅผ ์ถ”๊ฐ€ํ•˜๊ฑฐ๋‚˜ ๊ธฐ์กด ๋ฐ์ดํ„ฐ๋ฅผ ์ˆ˜์ •, ์‚ญ์ œํ•  ๋•Œ ์ธ๋ฑ์Šค๋„ ํ•จ๊ป˜ ์—…๋ฐ์ดํŠธ ๋˜์–ด์•ผ ํ•ฉ๋‹ˆ๋‹ค.

๋”ฐ๋ผ์„œ ์“ฐ๊ธฐ ์ž‘์—…(INSERT, UPDATE, DELETE)์— ๋Œ€ํ•œ ์„ฑ๋Šฅ์ด ์ €ํ•˜๋  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค.

์ €์žฅ ๊ณต๊ฐ„ ๋ถ€๋‹ด

์ธ๋ฑ์Šค๋Š” ์ €์žฅ ๊ณต๊ฐ„์„ ์ฐจ์ง€ํ•ฉ๋‹ˆ๋‹ค.

๋Œ€์šฉ๋Ÿ‰์˜ ํ…Œ์ด๋ธ”์ด๋‚˜ ์—ฌ๋Ÿฌ ๊ฐœ์˜ ์ธ๋ฑ์Šค๊ฐ€ ์žˆ๋Š” ๊ฒฝ์šฐ, ๋””์Šคํฌ ๊ณต๊ฐ„์˜ ์†Œ๋น„๊ฐ€ ๋Š˜์–ด๋‚  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค.

์ด๋Š” ํŠนํžˆ ๋ฉ”๋ชจ๋ฆฌ์— ์ ์žฌ๋˜์–ด ๋” ๋น ๋ฅธ ๊ฒ€์ƒ‰์„ ์ œ๊ณตํ•˜๋Š” ๊ฒฝ์šฐ์— ๋ถ€๋‹ด์ด ๋  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค.

์ธ๋ฑ์Šค ์œ ์ง€ ๋น„์šฉ

์ธ๋ฑ์Šค๋ฅผ ์œ ์ง€ํ•˜๊ธฐ ์œ„ํ•ด ๋ฐ์ดํ„ฐ ์‚ฝ์ž…, ์ˆ˜์ •, ์‚ญ์ œ ์‹œ์— ์ถ”๊ฐ€์ ์ธ ์ž‘์—…์ด ํ•„์š”ํ•˜๋ฉฐ, ์ด๋กœ ์ธํ•ด ์˜ค๋ฒ„ํ—ค๋“œ๊ฐ€ ๋ฐœ์ƒํ•ฉ๋‹ˆ๋‹ค.

์ด๋Š” ๋ฐ์ดํ„ฐ์˜ ๋ณ€๊ฒฝ์ด ์ž์ฃผ ์ผ์–ด๋‚˜๋Š” ๊ฒฝ์šฐ์— ๋” ๋ถ€๊ฐ๋  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค.

๋‹ค์–‘์„ฑ ์žˆ๋Š” ์ฟผ๋ฆฌ์— ๋Œ€ํ•œ ์ตœ์ ํ™” ์–ด๋ ค์›€

๋ชจ๋“  ์ฟผ๋ฆฌ์— ๋Œ€ํ•œ ์ธ๋ฑ์Šค๋ฅผ ์ƒ์„ฑํ•˜๋Š” ๊ฒƒ์€ ํ˜„์‹ค์ ์œผ๋กœ ์–ด๋ ต์Šต๋‹ˆ๋‹ค.

์–ด๋–ค ์ฟผ๋ฆฌ์—๋Š” ์ธ๋ฑ์Šค๊ฐ€ ๋„์›€์ด ๋˜์ง€ ์•Š์„ ์ˆ˜ ์žˆ๊ณ , ๋‹ค๋ฅธ ์ฟผ๋ฆฌ์—์„œ๋Š” ํšจ๊ณผ์ ์ผ ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค.

๋”ฐ๋ผ์„œ ๋‹ค์–‘ํ•œ ์ฟผ๋ฆฌ ํŒจํ„ด์— ๋Œ€ํ•œ ์ตœ์ ํ™”๊ฐ€ ์–ด๋ ค์šธ ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค.

์ž์ฃผ ์‚ฌ์šฉ๋˜์ง€ ์•Š๋Š” ์ธ๋ฑ์Šค์˜ ๋‚ญ๋น„

๋ฐ์ดํ„ฐ๋ฒ ์ด์Šค์—์„œ ์ž์ฃผ ์‚ฌ์šฉ๋˜์ง€ ์•Š๋Š” ์ธ๋ฑ์Šค๋Š” ์ž์›์„ ๋‚ญ๋น„ํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค.

ํŠนํžˆ ๋ณ€๊ฒฝ์ด ์ž์ฃผ ์ผ์–ด๋‚˜๋Š” ํ…Œ์ด๋ธ”์—๋Š” ์‹ค์ œ๋กœ ์‚ฌ์šฉ๋˜์ง€ ์•Š๋Š” ์ธ๋ฑ์Šค๋ฅผ ์ œ๊ฑฐํ•˜๋Š” ๊ฒƒ์ด ์„ฑ๋Šฅ ํ–ฅ์ƒ์— ๋„์›€์ด ๋  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค.

๋ณตํ•ฉ ์ธ๋ฑ์Šค์˜ ์ฃผ์˜์‚ฌํ•ญ

๋ณตํ•ฉ ์ธ๋ฑ์Šค๋Š” ์—ฌ๋Ÿฌ ์—ด์„ ๊ธฐ๋ฐ˜์œผ๋กœ ๋งŒ๋“ค์–ด์ง€๋ฉฐ, ์ฟผ๋ฆฌ์—์„œ ์‚ฌ์šฉ๋˜๋Š” ์ˆœ์„œ์™€ ์ผ์น˜ํ•ด์•ผ ์ตœ์ ์˜ ์„ฑ๋Šฅ์„ ๋ฐœํœ˜ํ•ฉ๋‹ˆ๋‹ค.

์ž˜๋ชป๋œ ์ˆœ์„œ๋กœ ์ธ๋ฑ์Šค๋ฅผ ๊ตฌ์„ฑํ•˜๋ฉด ์„ฑ๋Šฅ ํ–ฅ์ƒ์ด ๊ธฐ๋Œ€ํ•œ ๋Œ€๋กœ ์ด๋ฃจ์–ด์ง€์ง€ ์•Š์„ ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค.

์—…๋ฐ์ดํŠธ๋œ ํ†ต๊ณ„ ์œ ์ง€ ์–ด๋ ค์›€

์ผ๋ถ€ ๋ฐ์ดํ„ฐ๋ฒ ์ด์Šค ์‹œ์Šคํ…œ์€ ์ธ๋ฑ์Šค์˜ ํ†ต๊ณ„๋ฅผ ์‚ฌ์šฉํ•˜์—ฌ ์ฟผ๋ฆฌ ์‹คํ–‰ ๊ณ„ํš์„ ์ˆ˜๋ฆฝํ•ฉ๋‹ˆ๋‹ค.

ํ†ต๊ณ„๊ฐ€ ์—…๋ฐ์ดํŠธ๋˜์ง€ ์•Š์œผ๋ฉด ์ตœ์ ์˜ ์‹คํ–‰ ๊ณ„ํš์„ ์ˆ˜๋ฆฝํ•˜๋Š” ๊ฒƒ์ด ์–ด๋ ค์šธ ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค.

 

SELECT์˜ ์„ฑ๋Šฅ์„ ๋†’์ผ ์ˆ˜ ์žˆ๋Š” ๋ฐฉ๋ฒ•

SELECT query์˜ ์„ฑ๋Šฅ์„ ๋†’์ด๋Š” ๊ฐ€์žฅ ๋Œ€ํ‘œ์ ์ธ ๋ฐฉ๋ฒ•์ค‘์— ํ•˜๋‚˜๋Š” Index๋ฅผ ์‚ฌ์šฉํ•˜๋Š” ๊ฒƒ์ž…๋‹ˆ๋‹ค.

index๋ฅผ ์‚ฌ์šฉํ•˜๊ฒŒ ๋˜๋ฉด SELECT WHERE์ ˆ์ฒ˜๋Ÿผ ํŠน์ • ์กฐ๊ฑด์„ ๋งŒ์กฑํ•˜๋Š” ๋ฐ์ดํ„ฐ๋ฅผ ๊ฒ€์ƒ‰ํ•  ๋•Œ table์˜ ๋ชจ๋“  ๋ฐ์ดํ„ฐ๋ฅผ ์‚ดํŽด๋ณผ ํ•„์š” ์—†์ด index์—์„œ ๋น ๋ฅด๊ฒŒ ํ•ด๋‹น ๋ฐ์ดํ„ฐ์— ์ ‘๊ทผํ•  ์ˆ˜ ์žˆ๊ฒŒ ๋ฉ๋‹ˆ๋‹ค.

 

Index์˜ ๋‚ด๋ถ€๋™์ž‘ ์›๋ฆฌ

index๋Š” ๋Œ€๋ถ€๋ถ„ B+ Tree ์ž๋ฃŒ๊ตฌ์กฐ๋กœ ์ด๋ฃจ์–ด์ ธ ์žˆ์–ด, WHERE ์กฐ๊ฑด๊ณผ ์ผ์น˜ํ•˜๋Š” ๋ฐ์ดํ„ฐ๋“ค์˜ ์ €์žฅ ์œ„์น˜๋ฅผ ํ›จ์”ฌ ๋น ๋ฅด๊ฒŒ ์ฐพ์„ ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค.

 

Index๋ฅผ ๋งŽ์ด ์ƒ์„ฑํ•˜๋ฉด ์•ˆ๋˜๋Š” ์ด์œ 

index๋ฅผ ์ƒ์„ฑํ•˜๋ฉด ์กฐ๊ฑด ๊ฒ€์ƒ‰ ์„ฑ๋Šฅ์ด ํ–ฅ์ƒ๋  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค.

ํ•˜์ง€๋งŒ ์ถ”๊ฐ€ ์ €์žฅ๊ณต๊ฐ„์ด ํ•„์š”ํ•˜๊ณ , ๋ฐ์ดํ„ฐ๋ฅผ ์ถ”๊ฐ€/์ˆ˜์ •/์‚ญ์ œ๋ฅผ ํ•  ๋•Œ๋งˆ๋‹ค ๊ด€๋ จ index๋ฅผ ๋ชจ๋‘ ์ˆ˜์ •ํ•ด์ค˜์•ผ ๋˜๊ธฐ ๋•Œ๋ฌธ์— ์‹œ๊ฐ„์ด ์ถ”๊ฐ€์ ์œผ๋กœ ์†Œ์š”๋ฉ๋‹ˆ๋‹ค.

๋”ฐ๋ผ์„œ ์ถ”๊ฐ€ ์ €์žฅ๊ณต๊ฐ„๊ณผ ๋ฐ์ดํ„ฐ ์—…๋ฐ์ดํŠธ์‹œ ์†Œ์š”๋˜๋Š” ์ถ”๊ฐ€ ์‹œ๊ฐ„ ๋“ฑ์„ ๋ณตํ•ฉ์ ์œผ๋กœ ๊ณ ๋ คํ•˜์—ฌ ์กฐ๊ฑด ๊ฒ€์ƒ‰์˜ ์„ฑ๋Šฅํ–ฅ์ƒ์ด ๋” ํฐ ์ด๋“์ด ๋œ๋‹ค๊ณ  ํŒ๋‹จ๋˜๋Š” column์—๋งŒ index๋ฅผ ์ƒ์„ฑํ•˜๋Š” ๊ฒƒ์ด ์ข‹์Šต๋‹ˆ๋‹ค.

 

Index๋กœ ์‚ฌ์šฉํ•˜๊ธฐ ์ข‹์€ column

index๋Š” where ์ ˆ์—์„œ ์ž์ฃผ ์กฐํšŒ๋˜๊ณ , ์ˆ˜์ • ๋นˆ๋„๊ฐ€ ๋‚ฎ์œผ๋ฉฐ, ์นด๋””๋„๋ฆฌํ‹ฐ๋Š” ๋†’๊ณ , ์„ ํƒ๋„๊ฐ€ ๋‚ฎ์€ column์„ ์„ ํƒํ•ด์„œ ์„ค์ •ํ•˜๋Š” ๊ฒƒ์ด ๊ฐ€์žฅ ์ข‹์Šต๋‹ˆ๋‹ค.

๊ธฐ์ค€ ์ ํ•ฉ์„ฑ
์นด๋””๋„๋ฆฌํ‹ฐ(Cardinality) ๋†’์„์ˆ˜๋ก ์ ํ•ฉ (๋ฐ์ดํ„ฐ ์ค‘๋ณต์ด ์ ์„์ˆ˜๋ก ์ ํ•ฉ)
์„ ํƒ๋„(Selectivity) ๋‚ฎ์„์ˆ˜๋ก ์ ํ•ฉ
์กฐํšŒ ํ™œ์šฉ๋„ ๋†’์„์ˆ˜๋ก ์ ํ•ฉ (where ์ ˆ์—์„œ ๋งŽ์ด ์‚ฌ์šฉ๋˜๋ฉด ์ ํ•ฉ)
์ˆ˜์ • ๋นˆ๋„ ๋‚ฎ์„์ˆ˜๋ก ์ ํ•ฉ

 

Index ํšจ๊ณผ์ ์œผ๋กœ ์‚ฌ์šฉํ•˜๋Š” ๋ฐฉ๋ฒ•

  • SELECT WHERE์ ˆ์— ์ž์ฃผ ์‚ฌ์šฉ๋˜๋Š” Column์— ๋Œ€ํ•ด index๋ฅผ ์ƒ์„ฑํ•˜๋Š” ๊ฒƒ์ด ์ข‹์Šต๋‹ˆ๋‹ค.
  • ๋ฐ์ดํ„ฐ ์ˆ˜์ • ๋นˆ๋„๊ฐ€ ๋‚ฎ์„์ˆ˜๋ก ์ ํ•ฉํ•ฉ๋‹ˆ๋‹ค. insert / update / delete ์ž‘์—… ์‹œ, ๋ฐ์ดํ„ฐ์— ๋ณ€ํ™”๊ฐ€ ์ƒ๊ธฐ๊ธฐ ๋•Œ๋ฌธ์— index์—์„œ๋Š” ๋งค๋ฒˆ ์ •๋ ฌ์„ ๋‹ค์‹œ ํ•ด์•ผํ•ฉ๋‹ˆ๋‹ค. ์ด์— ๋”ฐ๋ฅธ ๋ถ€ํ•˜๊ฐ€ ๋ฐœ์ƒํ•˜๊ธฐ ๋•Œ๋ฌธ์— ์ˆ˜์ • ๋นˆ๋„๊ฐ€ ๋‚ฎ์€ column์„ index๋กœ ์„ค์ •ํ•˜๋ฉด ์ข‹์Šต๋‹ˆ๋‹ค.
  • ๋ฐ์ดํ„ฐ์˜ ์ค‘๋ณต์ด ๋†’์€ column์€ index ํšจ๊ณผ๊ฐ€ ๋ณ„๋กœ ์—†์Šต๋‹ˆ๋‹ค. ์˜ˆ๋ฅผ ๋“ค์–ด ์„ฑ๋ณ„์€ ์ข…๋ฅ˜๊ฐ€ 2 ๊ฐ€์ง€ ๋ฐ–์— ์—†์œผ๋ฏ€๋กœ index๋ฅผ ์ƒ์„ฑํ•˜์ง€ ์•Š๋Š” ๊ฒƒ์ด ์ข‹์Šต๋‹ˆ๋‹ค. ์ฆ‰, ์„ ํƒ๋„๊ฐ€ ๋‚ฎ์„ ๋•Œ ์œ ๋ฆฌํ•ฉ๋‹ˆ๋‹ค.(๋ณดํ†ต 5~10% ์ด๋‚ด)
  • ๋ฐ์ดํ„ฐ์˜ ์–‘์ด ๋งŽ์„์ˆ˜๋ก index๋กœ ์ธํ•œ ์„ฑ๋Šฅํ–ฅ์ƒ์ด ๋” ํฝ๋‹ˆ๋‹ค. ๋ฐ์ดํ„ฐ ์–‘์ด ์ ๋‹ค๋ฉด index์˜ ํ˜œํƒ๋ณด๋‹จ ์†ํ•ด๊ฐ€ ๋” ํด ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค.
  • Join ์กฐ๊ฑด์œผ๋กœ ์ž์ฃผ ์‚ฌ์šฉ๋˜๋Š” column์˜ ๊ฒฝ์šฐ
  • ํ•œ table์— index๊ฐ€ ๋„ˆ๋ฌด ๋งŽ์œผ๋ฉด ๋ฐ์ดํ„ฐ ์ˆ˜์ •์‹œ ์†Œ์š”๋˜๋Š” ์‹œ๊ฐ„์ด ๋„ˆ๋ฌด ๊ธธ์–ด์งˆ ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค. (table๋‹น 4~5๊ฐœ ์ •๋„ ๊ถŒ์žฅ)

 

 

 

 

 

 


์ฐธ๊ณ 

https://www.nossi.dev/

728x90
๋ฐ˜์‘ํ˜•