๋ณธ๋ฌธ ๋ฐ”๋กœ๊ฐ€๊ธฐ

๐Ÿ‡ฉ๐Ÿ‡ฆ๐Ÿ‡น๐Ÿ‡ฆ๐Ÿ‡ง๐Ÿ‡ฆ๐Ÿ‡ธ๐Ÿ‡ช

SQL ๋ฐ์ดํ„ฐ๋ฒ ์ด์Šค(DB) ํ•ด์‹œ ์ธ๋ฑ์Šค, ๋ฒ„์ผ“, ํ•ด์‹œ ํ•จ์ˆ˜

ํ•ด์‹œ ์ธ๋ฑ์Šค(hash index)

- ํ•ด์‹œ ํ•จ์ˆ˜๋ฅผ ๊ธฐ๋ฐ˜์œผ๋กœ ์ธ๋ฑ์Šค ์—”ํŠธ๋ฆฌ๋ฅผ ์ €์žฅํ•œ ์ธ๋ฑ์Šค

 

๋ฒ„์ผ“

º ์ธ๋ฑ์Šค ์—”ํŠธ๋ฆฌ๊ฐ€ ์ €์žฅ๋˜๋Š” ๊ณต๊ฐ„

º ํ•ด์‹œํ•จ์ˆ˜ ๊ฐ’์„ ๋ฒ„์ผ“ ๋ฒˆํ˜ธ๋กœ ์‚ฌ์šฉ

โœ”  ํ•ด์‹œํ•จ์ˆ˜ ๊ฐ’์œผ๋กœ ์ธ๋ฑ์Šค ์—”ํŠธ๋ฆฌ๋ฅผ ์ €์žฅํ•  ๋ฒ„์ผ“์„ ๊ฒฐ์ •

 

์ธ๋ฑ์Šค ๊ตฌ์„ฑ ๋ฐฉ๋ฒ•

- ์ธ๋ฑ์Šค ๊ตฌ์„ฑ์— ์‚ฌ์šฉ๋  ๊ฒ€์ƒ‰ ํ‚ค ํ•„๋“œ ๊ฒฐ์ •

- ๋ ˆ์ฝ”๋“œ์˜ ํ•„๋“œ ๊ฐ’์— ํ•ด์‹œ ํ•จ์ˆ˜๋ฅผ ์ ์šฉํ•˜์—ฌ ๋ฒ„์ผ“ ๋ฒˆํ˜ธ ์ƒ์„ฑ

- ์ธ๋ฑ์Šค ์—”ํŠธ๋ฆฌ (ํ•„๋“œ ๊ฐ’๊ณผ ๋ ˆ์ฝ”๋“œ ์ฃผ์†Œ ์Œ)๋ฅผ ์ƒ์„ฑํ•˜์—ฌ ํ•ด๋‹น ๋ฒ„์ผ“์— ์ €์žฅ

 

์ธ๋ฑ์Šค ์‚ฌ์šฉ ๋ฐฉ๋ฒ•

- ๊ฒ€์ƒ‰ํ•  ํ•„๋“œ ๊ฐ’์„ ํ•ด์‹œ ํ•จ์ˆ˜์— ์ ์šฉํ•˜์—ฌ ๋ฒ„์ผ“ ๋ฒˆํ˜ธ ์ƒ์„ฑ

- ํ•ด๋‹น ๋ฒ„์ผ“ ์•ˆ์— ๋“ค์–ด ์žˆ๋Š” ์ธ๋ฑ์Šค ์—”ํŠธ๋ฆฌ๋“ค ์ค‘ ์›ํ•˜๋Š” ํ•„๋“œ ๊ฐ’์„ ํฌํ•จํ•œ ์—”ํŠธ๋ฆฌ ๊ฒ€์ƒ‰

- ์—”ํŠธ๋ฆฌ์— ํฌํ•จ๋œ ๋ ˆ์ฝ”๋“œ ์ฃผ์†Œ ์ด์šฉ

 

ํ•ด์‹œ ํ•จ์ˆ˜

โœ” ๋Œ€๋Ÿ‰์˜ ๋ฐ์ดํ„ฐ ํ‚ค ์ง‘ํ•ฉ์„ ์ ์€ ๋ฒ”์œ„์˜ ๋ฐ์ดํ„ฐ ์ง‘ํ•ฉ์œผ๋กœ ๋Œ€์‘์‹œํ‚ค๋Š” ํ•จ์ˆ˜ ํ•ด์‹œ ๊ฐ’์€ ์ž…๋ ฅ ๊ฐ’์˜ ๋ถ„ํฌ์™€ ์ƒ๊ด€์—†์ด ๊ท ๋“ฑํ•˜๊ฒŒ ๋ถ„ํฌ๋˜์–ด์•ผ ํ•จ

 

ํ•ด์‹œ ํ•จ์ˆ˜์˜ ์˜ˆ)  H(x) = x % N (๋‚˜๋จธ์ง€ ์—ฐ์‚ฐ)

โ–ช 1๋ถ€ํ„ฐ N-1๊นŒ์ง€์˜ ์ •์ˆ˜๋ฅผ ํ•ด์‹œ ๊ฐ’์œผ๋กœ ์ƒ์„ฑ

 

๋ฒ„์ผ“ ์˜ค๋ฒ„ํ”Œ๋กœ์šฐ

- ์ผ๋ฐ˜์ ์œผ๋กœ ๋ฒ„์ผ“์˜ ํฌ๊ธฐ๋Š” ๊ณ ์ •๋จ

- ๋ฒ„์ผ“์— ์—”ํŠธ๋ฆฌ๊ฐ€ ๋‹ค ์ฐจ๋Š” ๊ฒฝ์šฐ ์˜ค๋ฒ„ํ”Œ๋กœ์šฐ ๋ฐœ์ƒ

- ์ƒˆ๋กœ์šด ๋ฒ„์ผ“์„ ์ƒ์„ฑํ•˜์—ฌ ๊ธฐ์กด ๋ฒ„์ผ“๊ณผ ์—ฐ๊ฒฐํ•ด์•ผ ํ•จ (bucket chaining)

- ์˜ค๋ฒ„ํ”Œ๋กœ์šฐ๊ฐ€ ๋งŽ์ด ๋ฐœ์ƒํ•  ์ˆ˜๋ก ํ•ด์‹œ ์ธ๋ฑ์Šค ์„ฑ๋Šฅ์ด ์ €ํ•˜๋จ

 

ํ•ด์‹œ ํ•จ์ˆ˜์™€ ๋ฒ„์ผ“ ์˜ค๋ฒ„ํ”Œ๋กœ์šฐ

º ํ•ด์‹œ ํ•จ์ˆ˜์˜ ๊ท ๋“ฑ์„ฑ์ด ์ข‹์„์ˆ˜๋ก ์˜ค๋ฒ„ํ”Œ๋กœ์šฐ๊ฐ€ ์ ๊ณ , ๊ท ๋“ฑ์„ฑ์ด ๋‚˜์ ์ˆ˜๋ก ์˜ค๋ฒ„ํ”Œ๋กœ์šฐ๊ฐ€ ๋นˆ๋ฒˆํ•จ

º ๋ฒ„์ผ“ ์˜ค๋ฒ„ํ”Œ๋กœ์šฐ๊ฐ€ ๋งŽ์ด ๋ฐœ์ƒํ•œ ๊ฒฝ์šฐ ์ธ๋ฑ์Šค์˜ ์žฌ๊ตฌ์„ฑ ์ž‘์—… ํ•„์š”

→ ๋ฒ„์ผ“์˜ ๊ฐœ์ˆ˜๋ฅผ ๋Š˜๋ฆฌ๊ณ  ํ•ด์‹œ ํ•จ์ˆ˜๋ฅผ ๋ณ€๊ฒฝ

 

B+ tree ์ธ๋ฑ์Šค or ํ•ด์‹œ ์ธ๋ฑ์Šค

 

ํ•ด์‹œ ์ธ๋ฑ์Šค

- ๋™๋“ฑ ๋น„๊ต ์กฐ๊ฑด์„ ๊ฐ–๋Š” ๊ฒ€์ƒ‰์— ์œ ๋ฆฌ

โœ” ํ•ด์‹œ ํ•จ์ˆ˜๋ฅผ ํ†ตํ•ด ์ง์ ‘ ์ธํ…์Šค ์—”ํŠธ๋ฆฌ๋ฅผ ํฌํ•จํ•˜๋Š” ๋ฒ„์ผ“์„ ์ฐพ์Œ

 

B+ tree ์ธ๋ฑ์Šค

- ๋ฒ”์œ„ ์กฐ๊ฑด์„ ํฌํ•จํ•œ ๊ฒ€์ƒ‰์— ์œ ๋ฆฌ

โœ” ๋‹จ๋ง ๋…ธ๋“œ์˜ ์—”ํŠธ๋ฆฌ๋“ค์ด ๊ฒ€์ƒ‰ ํ‚ค ์ˆœ์„œ๋Œ€๋กœ ์ •๋ ฌ ๋ฐ ์—ฐ๊ฒฐ๋˜์–ด ์žˆ์Œ

 

์ธ๋ฑ์Šค์˜ ๋ถ„๋ฅ˜

 

โ–ท ๋Œ€์‘ ๋ฐ€์ง‘๋„์— ๋”ฐ๋ผ ๋ถ„๋ฅ˜

 

ํฌ์†Œ ์ธ๋ฑ์Šค(sparse index)

- ํ…Œ์ด๋ธ”์˜ ์ผ๋ถ€ ๋ ˆ์ฝ”๋“œ์— ๋Œ€ํ•ด์„œ๋งŒ ์ธ๋ฑ์Šค ์—”ํŠธ๋ฆฌ ์ƒ์„ฑ

 

๋ฐ€์ง‘ ์ธ๋ฑ์Šค(dense index)

- ํ…Œ์ด๋ธ”์˜ ๋ชจ๋“  ๋ ˆ์ฝ”๋“œ์— ๋Œ€ํ•ด์„œ ์ธ๋ฑ์Šค ์—”ํŠธ๋ฆฌ ์ƒ์„ฑ

 

โ–ทํด๋Ÿฌ์Šคํ„ฐ๋ง ์œ ๋ฌด์— ๋”ฐ๋ผ ๋ถ„๋ฅ˜

 

ํด๋Ÿฌ์Šคํ„ฐ ์ธ๋ฑ์Šค(clustered index)

- ์ธ๋ฑ์Šค๊ฐ€ ์„ค์ •๋œ ํ•„๋“œ ๊ฐ’์˜ ์ˆœ์„œ๋Œ€๋กœ ๋ ˆ์ฝ”๋“œ๋“ค์ด ์ธ์ ‘ํ•˜์—ฌ ์ €์žฅ๋จ

โ–ช 1์ฐจ ์ธ๋ฑ์Šค – ํ•œ ํ…Œ์ด๋ธ”์—๋Š” ํ•˜๋‚˜์˜ ํด๋Ÿฌ์Šคํ„ฐ ์ธ๋ฑ์Šค๋งŒ ๊ฐ€๋Šฅ

- ์ฃผ๋กœ ๊ธฐ๋ณธ ํ‚ค ํ•„๋“œ์— ๋Œ€ํ•ด ์„ค์ •๋จ

- ํฌ์†Œ ์ธ๋ฑ์Šค ๋˜๋Š” ๋ฐ€์ง‘ ์ธ๋ฑ์Šค ํ˜•ํƒœ ๊ฐ€๋Šฅ

 

๋น„ํด๋Ÿฌ์Šคํ„ฐ ์ธ๋ฑ์Šค(non-clustered index)

- ์ธ๋ฑ์Šค ํ•„๋“œ ๊ฐ’์˜ ์ˆœ์„œ๊ฐ€ ๋ ˆ์ฝ”๋“œ๋“ค์˜ ๋ฌผ๋ฆฌ์  ์ €์žฅ ์œ„์น˜์™€ ๋ฌด๊ด€

- 2์ฐจ ์ธ๋ฑ์Šค

- ๋ฐ˜๋“œ์‹œ ๋ฐ€์ง‘ ์ธ๋ฑ์Šค ๊ตฌ์กฐ๋ฅผ ๊ฐ€์ง