Index

Icarus_wยท2023๋…„ 1์›” 3์ผ
0

CS๊ณต๋ถ€

๋ชฉ๋ก ๋ณด๊ธฐ
21/25

DB์—์„œ table์˜ ๊ฒ€์ƒ‰ ์„ฑ๋Šฅ์„ ๋†’์—ฌ์ฃผ๋Š” ๋Œ€ํ‘œ์ ์ธ ๋ฐฉ๋ฒ•

RDBMS์—์„œ๋Š” B+tree๊ตฌ์กฐ๋กœ๋œ index๋ฅผ ์‚ฌ์šฉํ•ด์„œ ๊ฒ€์ƒ‰์†๋„๋ฅผ ํ–ฅ์ƒ์‹œํ‚จ๋‹ค.

Full Table Scan์„ ์•ˆํ•ด๋„ ๋œ๋‹ค.

๊ตฌ์กฐ : B+tree, Hash, Bitmap...

ํŠน์ • Column์„ search-key ๊ฐ’์œผ๋กœ ์„ค์ •ํ•˜์—ฌ index๋ฅผ ์ƒ์„ฑํ•˜๋ฉด, ํ•ด๋‹น search-key ๊ฐ’์„ ๊ธฐ์ค€์œผ๋กœ ์ •๋ ฌํ•˜์—ฌ(search-key, pointer)๋ฅผ ๋ณ„๋กœ ํŒŒ์ผ์— ์ €์žฅํ•œ๋‹ค. -> tableํฌ๊ธฐ์˜10 % ์ €์žฅ๊ณต๊ฐ„

์‚ฌ์šฉ์ด์œ  : talbe์€ ์ˆœ์„œ์—†์ด ๋ˆ„์ ๋œ๋‹ค. ํ•˜์ง€๋งŒ, index๋Š” ์ •๋ ฌ๋˜์–ด ์ €์žฅ

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

  • Clustering index : pk ๊ธฐ์ค€์œผ๋กœ table์ด ์ •๋ ฌ(์˜์–ด์‚ฌ์ „)

  • Secondary index : ๋”ฐ๋กœ index table(๋ถ€๋ก ์ƒ‰์ธ)

index์˜ ์žฅ๋‹จ์ 

์žฅ์ 

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

๋‹จ์ 

  1. ์ถ”๊ฐ€ ์ €์žฅ๊ณต๊ฐ„ ํ•„์š”
  2. ๋Š๋ฆฐ ๋ฐ์ดํ„ฐ ๋ณ€๊ฒฝ ์ž‘์—…

๐Ÿฅ‡Index๋ฅผ ์–ด๋Š Column์— ์‚ฌ์šฉํ•˜๋Š” ๊ฒƒ์ด ์ข‹์„๊นŒ?

  1. where์—์„œ ์ž์ฃผ ์กฐํšŒ
  2. ์ˆ˜์ • ๋นˆ๋„๊ฐ€ ๋‚ฎ๊ณ 
  3. ์นด๋””๋„๋ฆฌํ‹ฐ ๋†’๊ณ  (์ค‘๋ณต๋˜์ง€ ์•Š์€ ์ •๋„)
  4. ์„ ํƒ๋„๊ฐ€ ๋‚ฎ์€ (ํŠน์ • ๊ฐ’์„ ์ž˜ ๊ณจ๋ผ๋‚ผ ์ˆ˜ ์žˆ๋Š” ์ •๋„, 1์ผ์ˆ˜๋ก unique)

Q. ์„ฑ๋ณ„ column์— index๋ฅผ ๊ฑธ์–ด์ฃผ๋Š”๊ฒŒ ์ข‹์„๊นŒ?

์„ฑ๋ณ„์ฒ˜๋Ÿผ ๋‚จ๋…€ ๋‘ ์ข…๋ฅ˜๋กœ๋งŒ ๋‚˜๋ˆ ์ง€๋Š” ๊ฒฝ์šฐ๋Š” ์นด๋””๋„๋ฆฌํ‹ฐ๊ฐ€ ๋งค์šฐ ๋‚ฎ๊ณ , ์„ ํƒ๋„๋Š” ๋งค์šฐ ๋†’๊ฒŒ ๋œ๋‹ค. ์ด ๊ฒฝ์šฐ index๊ฐ€ ์ฃผ๋Š” ์ด์ ์€ ๋งค์šฐ ์ ๊ณ , ์˜คํžˆ๋ ค ์ €์žฅ๊ณต๊ฐ„ ์ฐจ์ง€์™€ ๋ฐ์ดํ„ฐ ์ˆ˜์ •์‹œ ์„ฑ๋Šฅ์ €ํ•˜๋“ฑ์„ ๊ณ ๋ คํ•˜์—ฌ index๋ฅผ ์ƒ์„ฑํ•˜์ง€ ์•Š๋Š” ๊ฒƒ์ด ์ข‹๋‹ค.

Q. true ๋˜๋Š” false ๊ฐ’์„ ๊ฐ–๋Š” column์—์„œ, true 1%, false 99 %์˜ ๋น„์œจ๋กœ ๊ตฌ์„ฑ๋œ ์ƒํ™ฉ์—์„œ index๋ฅผ ๊ฑฐ๋Š”๊ฒŒ ์ข‹์„๊นŒ?

์•„๋ฌด๋ฆฌ ๋น„์œจ์˜ ์ฐจ์ด๊ฐ€ ์žˆ์–ด๋„ true, false ๋‘ ์ข…๋ฅ˜๋กœ๋งŒ ๋‚˜๋ˆ ์ง€๋Š” ๊ฒฝ์šฐ์—๋Š” ์นด๋””๋„๋ฆฌํ‹ฐ๊ฐ€ ๋งค์šฐ ๋‚ฎ๊ณ , ์„ ํƒ๋„๋Š” ๋งค์šฐ ๋†’๊ฒŒ ๋œ๋‹ค. ๋”ฐ๋ผ์„œ index๋ฅผ ์ƒ์„ฑํ•˜์ง€ ์•Š๋Š”๊ฒƒ์ด ์ข‹๋‹ค.

index๋ฅผ B+tree๋กœ ๊ตฌํ˜„ํ•˜๋Š” ์ด์œ 

Hash table์„ ์‚ฌ์šฉํ•˜๋ฉด ํ•˜๋‚˜์˜ ๋ฐ์ดํ„ฐ๋ฅผ ํƒ์ƒ‰ํ•˜๋Š” ์‹œ๊ฐ„์€ O(1)๋กœ b-tree๋ณด๋‹ค ๋น ๋ฅด์ง€๋งŒ, ๊ฐ’์ด ์ •๋ ฌ๋˜์–ด ์žˆ์ง€ ์•Š๊ธฐ ๋•Œ๋ฌธ์— ๋ถ€๋“ฑํ˜ธ๋ฅผ ์‚ฌ์šฉํ•˜๋Š” query์— ๋Œ€ํ•ด์„œ๋Š” ๋งค์šฐ ๋น„ํšจ์œจ์ ์ด๊ฒŒ ๋˜์–ด ๋ฐ์ดํ„ฐ๋ฅผ ์ •๋ ฌ ํ•ด์„œ ์ €์žฅํ•˜๋Š” b+tree๋ฅผ ์ด์šฉํ•œ๋‹ค.

profile
ํ•˜๋ฃจ์— ํ•˜๋‚˜

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