Home > DB > ๐Ÿ’พ[Database] Clustered Index(ํด๋Ÿฌ์Šคํ„ฐํ˜• ์ธ๋ฑ์Šค)๋Š” ๋ฌด์—‡์ผ๊นŒ์š”?

๐Ÿ’พ[Database] Clustered Index(ํด๋Ÿฌ์Šคํ„ฐํ˜• ์ธ๋ฑ์Šค)๋Š” ๋ฌด์—‡์ผ๊นŒ์š”?
Database Database Optimization

๐Ÿ’พ[Database] Clustered Index(ํด๋Ÿฌ์Šคํ„ฐํ˜• ์ธ๋ฑ์Šค)๋Š” ๋ฌด์—‡์ผ๊นŒ์š”?

๐Ÿ“Œ Intro.

  • โ†˜๏ธŽ ํด๋Ÿฌ์Šคํ„ฐํ˜• ์ธ๋ฑ์Šค(Clustered Index)๋Š” ๋ฐ์ดํ„ฐ๋ฒ ์ด์Šค ํ…Œ์ด๋ธ”์˜ ๋ฐ์ดํ„ฐ๊ฐ€ ๋ฌผ๋ฆฌ์ ์œผ๋กœ ์ •๋ ฌ๋œ ์ƒํƒœ๋กœ ์ €์žฅ๋˜๋Š” ์ธ๋ฑ์Šค์ž„.
    • โ†˜๏ธŽ ์ฆ‰, ํ…Œ์ด๋ธ”์˜ ๋ฐ์ดํ„ฐ ํ–‰(Row)์ด ํŠน์ • ๊ธฐ์ค€(์—ด, Column)์— ๋”ฐ๋ผ ์ •๋ ฌ๋˜๋ฉฐ, ์ธ๋ฑ์Šค๋Š” ๊ทธ ๊ธฐ์ค€์— ๋”ฐ๋ผ ํ…Œ์ด๋ธ”์˜ ๋ฌผ๋ฆฌ์  ์ˆœ์„œ๋ฅผ ์œ ์ง€ํ•จ.

โœ…1๏ธโƒฃ Clustered Index์˜ ํ•ต์‹ฌ ๊ฐœ๋….

1๏ธโƒฃ ๋ฌผ๋ฆฌ์  ์ •๋ ฌ(Physical Order).

  • โ†˜๏ธŽ ํด๋Ÿฌ์Šคํ„ฐํ˜• ์ธ๋ฑ์Šค(Clustered Index)๋Š” ํ…Œ์ด๋ธ”์˜ ๋ฐ์ดํ„ฐ๊ฐ€ ์ธ๋ฑ์Šค ํ‚ค ๊ฐ’์— ๋”ฐ๋ผ ๋ฌผ๋ฆฌ์ ์œผ๋กœ ์ •๋ ฌ๋จ.
  • โ†˜๏ธŽ ํ•œ ํ…Œ์ด๋ธ”์— ๋‹จ ํ•˜๋‚˜์˜ ํด๋Ÿฌ์Šคํ„ฐํ˜• ์ธ๋ฑ์Šค(Clustered Index)๋งŒ ์ƒ์„ฑํ•  ์ˆ˜ ์žˆ์Œ.
    • โ†˜๏ธŽ ๋ฐ์ดํ„ฐ์˜ ๋ฌผ๋ฆฌ์  ์ˆœ์„œ๋Š” ํ•˜๋‚˜์˜ ๊ธฐ์ค€์œผ๋กœ๋งŒ ์ •๋ ฌ ๊ฐ€๋Šฅ.

2๏ธโƒฃ ๊ธฐ๋ณธ ํ‚ค(Primary Key)์™€์˜ ๊ด€๊ณ„.

  • โ†˜๏ธŽ ๋Œ€๋ถ€๋ถ„์˜ ๋ฐ์ดํ„ฐ๋ฒ ์ด์Šค ์‹œ์Šคํ…œ์—์„œ Primary Key(๊ธฐ๋ณธ ํ‚ค)๋ฅผ ์„ค์ •ํ•˜๋ฉด ์ž๋™์œผ๋กœ ํด๋Ÿฌ์Šคํ„ฐํ˜• ์ธ๋ฑ์Šค(Clustered Index)๊ฐ€ ์ƒ์„ฑ๋จ.
    • โ†˜๏ธŽ ์˜ˆ๋ฅผ ๋“ค์–ด, id๊ฐ€ Primary Key๋กœ ์„ค์ •๋œ ๊ฒฝ์šฐ, ํ…Œ์ด๋ธ”์€ id ์ˆœ์„œ๋Œ€๋กœ ์ •๋ ฌ๋ฉ๋‹ˆ๋‹ค.

3๏ธโƒฃ ๋ฐ์ดํ„ฐ ํŽ˜์ด์ง€(Data Pages)

  • โ†˜๏ธŽ ํด๋Ÿฌ์Šคํ„ฐํ˜• ์ธ๋ฑ์Šค(Clustered Index)๋Š” ๋ฐ์ดํ„ฐ ํŽ˜์ด์ง€ ์ž์ฒด๊ฐ€ ์ธ๋ฑ์Šค์˜ ์ผ๋ถ€๊ฐ€ ๋จ.
    • ๋”ฐ๋ผ์„œ ํด๋Ÿฌ์Šคํ„ฐํ˜• ์ธ๋ฑ์Šค(Clustered Index)๋ฅผ ์‚ฌ์šฉํ•˜๋ฉด ๋ฐ์ดํ„ฐ์— ์ง์ ‘ ์ ‘๊ทผํ•  ์ˆ˜ ์žˆ์–ด ๊ฒ€์ƒ‰ ์†๋„๊ฐ€ ๋น ๋ฆ„.

4๏ธโƒฃ Non-Clustered Index (๋น„ํด๋Ÿฌ์Šคํ„ฐํ˜• ์ธ๋ฑ์Šค)์™€์˜ ์ฐจ์ด

  • โ†˜๏ธŽ ํด๋Ÿฌ์Šคํ„ฐํ˜• ์ธ๋ฑ์Šค(Clusterd Index) : ์‹ค์ œ ๋ฐ์ดํ„ฐ๊ฐ€ ์ธ๋ฑ์Šค ํ‚ค ์ˆœ์„œ๋Œ€๋กœ ์ •๋ ฌ๋˜์–ด ์ €์žฅ๋ฉ๋‹ˆ๋‹ค.
  • โ†˜๏ธŽ ๋น„ํด๋Ÿฌ์Šคํ„ฐํ˜• ์ธ๋ฑ์Šค(Non-Clustered Index) : ๋ฐ์ดํ„ฐ๋Š” ์ •๋ ฌ๋˜์ง€ ์•Š์œผ๋ฉฐ, ์ธ๋ฑ์Šค๋Š” ๋ฐ์ดํ„ฐ์˜ ์œ„์น˜๋ฅผ ๊ฐ€๋ฆฌํ‚ค๋Š” ํฌ์ธํ„ฐ๋ฅผ ํฌํ•จํ•ฉ๋‹ˆ๋‹ค.

โœ…2๏ธโƒฃ ํด๋Ÿฌ์Šคํ„ฐํ˜• ์ธ๋ฑ์Šค์˜ ์žฅ๋‹จ์ .

๐Ÿ‘ ์žฅ์ .

1๏ธโƒฃ ๋น ๋ฅธ ๊ฒ€์ƒ‰ ๊ธฐ๋Šฅ.

  • โ†˜๏ธŽ ์ธ๋ฑ์Šค ํ‚ค ๊ฐ’์œผ๋กœ ์ง์ ‘ ์ •๋ ฌ๋œ ๋ฐ์ดํ„ฐ๋ฅผ ๋น ๋ฅด๊ฒŒ ์กฐํšŒํ•  ์ˆ˜ ์žˆ์Œ.

2๏ธโƒฃ ๋ฒ”์œ„ ๊ฒ€์ƒ‰ ์ตœ์ ํ™”.

  • โ†˜๏ธŽ BETWEEN, ORDER BY, GROUP BY ๊ฐ™์€ ๋ฒ”์œ„ ๊ธฐ๋ฐ˜ ์ฟผ๋ฆฌ์— ์œ ๋ฆฌํ•จ.

3๏ธโƒฃ ๋ฐ์ดํ„ฐ ์ ‘๊ทผ ๋น„์šฉ ์ ˆ๊ฐ.

  • โ†˜๏ธŽ ๋ฐ์ดํ„ฐ ํŽ˜์ด์ง€ ์ž์ฒด๊ฐ€ ์ธ๋ฑ์Šค์˜ ์ผ๋ถ€์ด๋ฏ€๋กœ ์ถ”๊ฐ€ ํฌ์ธํ„ฐ๊ฐ€ ํ•„์š” ์—†์Œ.

๐Ÿ‘Ž ๋‹จ์ .

1๏ธโƒฃ ๋ฐ์ดํ„ฐ ์‚ฝ์ž…/์‚ญ์ œ ์„ฑ๋Šฅ ์ €ํ•˜.

  • โ†˜๏ธŽ ์ธ๋ฑ์Šค ์ˆœ์„œ์— ๋”ฐ๋ผ ๋ฐ์ดํ„ฐ๊ฐ€ ์ •๋ ฌ๋˜๋ฏ€๋กœ ์‚ฝ์ž…/์‚ญ์ œ ์‹œ ์˜ค๋ฒ„ํ—ค๋“œ๊ฐ€ ๋ฐœ์ƒํ•  ์ˆ˜ ์žˆ์Œ.

2๏ธโƒฃ ๋ฆฌ๋นŒ๋“œ ๋น„์šฉ.

  • โ†˜๏ธŽ ํด๋Ÿฌ์Šคํ„ฐํ˜• ์ธ๋ฑ์Šค(Clustered Index)๊ฐ€ ์ž์ฃผ ๋ณ€๊ฒฝ๋˜๋ฉด ์ธ๋ฑ์Šค๋ฅผ ์žฌ๊ตฌ์„ฑํ•ด์•ผ ํ•  ์ˆ˜๋„ ์žˆ์Œ.

3๏ธโƒฃ ํ•œ ๊ฐœ๋งŒ ์ƒ์„ฑ ๊ฐ€๋Šฅ.

  • โ†˜๏ธŽ ํ…Œ์ด๋ธ”๋‹น ํ•˜๋‚˜์˜ ํด๋Ÿฌ์Šคํ„ฐํ˜• ์ธ๋ฑ์Šค(Clustered Index)๋งŒ ์ƒ์„ฑํ•  ์ˆ˜ ์žˆ์Œ.

โœ…3๏ธโƒฃ ์–ธ์ œ ์‚ฌ์šฉํ•ด์•ผ ํ• ๊นŒ?

1๏ธโƒฃ ์ž์ฃผ ์กฐํšŒ๋˜๋Š” ํ…Œ์ด๋ธ”.

  • โ†˜๏ธŽ ์กฐํšŒ ์ฟผ๋ฆฌ๊ฐ€ ๋นˆ๋ฒˆํ•˜๊ฒŒ ์‹คํ–‰๋  ๊ฒฝ์šฐ ํด๋Ÿฌ์Šคํ„ฐํ˜• ์ธ๋ฑ์Šค๋ฅผ ์‚ฌ์šฉ.

2๏ธโƒฃ ๋ฒ”์œ„ ๊ฒ€์ƒ‰์ด ๋งŽ์€ ๊ฒฝ์šฐ.

  • โ†˜๏ธŽ BETWEEN, >, < ์™€ ๊ฐ™์€ ๋ฒ”์œ„ ๊ฒ€์ƒ‰์„ ์ž์ฃผ ์‚ฌ์šฉํ•œ๋‹ค๋ฉด ์œ ๋ฆฌํ•จ.

3๏ธโƒฃ ์ •๋ ฌ๋œ ๊ฒฐ๊ณผ๊ฐ€ ์ž์ฃผ ํ•„์š”ํ•œ ๊ฒฝ์šฐ.

  • โ†˜๏ธŽ ORDER BY ์ ˆ์ด ์ž์ฃผ ์‚ฌ์šฉ๋˜๋Š” ๊ฒฝ์šฐ ํšจ๊ณผ์ ์ž„.

โœ…4๏ธโƒฃ ๋น„๊ต: Clustered Index vs Non-Clustered Index

๊ตฌ๋ถ„ Clustered Index Non-Clustered Index
๋ฌผ๋ฆฌ์  ์ €์žฅ ๋ฐ์ดํ„ฐ ์ž์ฒด๊ฐ€ ์ •๋ ฌ๋จ ๋ฐ์ดํ„ฐ๋Š” ์ •๋ ฌ๋˜์ง€ ์•Š์Œ
์ธ๋ฑ์Šค ๊ฐœ์ˆ˜ ํ•˜๋‚˜๋งŒ ์ƒ์„ฑ ๊ฐ€๋Šฅ ์—ฌ๋Ÿฌ ๊ฐœ ์ƒ์„ฑ ๊ฐ€๋Šฅ
์„ฑ๋Šฅ ์กฐํšŒ ์„ฑ๋Šฅ์ด ๋” ๋น ๋ฆ„ ๋ฐ์ดํ„ฐ ์ ‘๊ทผ์— ์ถ”๊ฐ€ ๋‹จ๊ณ„ ํ•„์š”
์ฃผ๋กœ ์‚ฌ์šฉ๋˜๋Š” ๊ฒฝ์šฐ Primary Key๋กœ ์‚ฌ์šฉ๋จ Secondary Key๋กœ ์‚ฌ์šฉ๋จ

๐Ÿš€ ์ •๋ฆฌ.

  • โ†˜๏ธŽ ํด๋Ÿฌ์Šคํ„ฐํ˜• ์ธ๋ฑ์Šค(Clustered Index)๋Š” ํ…Œ์ด๋ธ”์˜ ๋ฐ์ดํ„ฐ๋ฅผ ํŠน์ • ํ‚ค ๊ธฐ์ค€์œผ๋กœ ๋ฌผ๋ฆฌ์ ์œผ๋กœ ์ •๋ ฌํ•˜์—ฌ ์ €์žฅํ•˜๋Š” ์ธ๋ฑ์Šค์ž…๋‹ˆ๋‹ค.
    • โ†˜๏ธŽ ์ฃผ๋กœ Primary Key์— ์˜ํ•ด ์ƒ์„ฑ๋˜๋ฉฐ, ๋น ๋ฅธ ๊ฒ€์ƒ‰ ๋ฐ ๋ฒ”์œ„ ์กฐํšŒ์— ์œ ๋ฆฌํ•ฉ๋‹ˆ๋‹ค.
    • โ†˜๏ธŽ ํ•˜์ง€๋งŒ ์‚ฝ์ž…/์‚ญ์ œ ์‹œ ์„ฑ๋Šฅ ์ €ํ•˜๊ฐ€ ๋ฐœ์ƒํ•  ์ˆ˜ ์žˆ๊ณ , ํ•˜๋‚˜์˜ ํ…Œ์ด๋ธ”์—๋Š” ํ•˜๋‚˜์˜ ํด๋Ÿฌ์Šคํ„ฐํ˜• ์ธ๋ฑ์Šค๋งŒ ์กด์žฌํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค.

๐ŸŽฏ ํ•ต์‹ฌ ํฌ์ธํŠธ:

  • โ†˜๏ธŽ ๋ฌผ๋ฆฌ์  ์ •๋ ฌ์ด ํ•ต์‹ฌ
  • โ†˜๏ธŽ Primary Key๊ฐ€ ๊ธฐ๋ณธ์ ์œผ๋กœ Clustered Index
  • โ†˜๏ธŽ ์กฐํšŒ ์ตœ์ ํ™”์— ์œ ๋ฆฌ, ์‚ฝ์ž…/์‚ญ์ œ ๋น„์šฉ์€ ์ฆ๊ฐ€

๐Ÿ™Œ ๋ฐ์ดํ„ฐ๋ฒ ์ด์Šค ์„ค๊ณ„ ์‹œ ํ…Œ์ด๋ธ”์˜ ํŠน์„ฑ๊ณผ ์ฟผ๋ฆฌ ํŒจํ„ด์„ ๊ณ ๋ คํ•˜์—ฌ ํด๋Ÿฌ์Šคํ„ฐํ˜• ์ธ๋ฑ์Šค๋ฅผ ์ ์ ˆํžˆ ํ™œ์šฉํ•ด์•ผ ํ•จ.