์šฐ๊ทœ์ด์ธ์šฐ์œค
Eager To Learn ๐ŸŒŒ
์šฐ๊ทœ์ด์ธ์šฐ์œค
์ „์ฒด ๋ฐฉ๋ฌธ์ž
์˜ค๋Š˜
์–ด์ œ

๋ธ”๋กœ๊ทธ ๋ฉ”๋‰ด

  • ๐Ÿก ํ™ˆ
  • ๐Ÿš€ ๊นƒํ—ˆ๋ธŒ
  • โ›… ํƒœ๊ทธ ํด๋ผ์šฐ๋“œ
  • ๋ถ„๋ฅ˜ ์ „์ฒด๋ณด๊ธฐ (217)
    • ๐Ÿ‘จ๐Ÿป‍๐Ÿ’ป PS (170)
      • JAVA (82)
      • MYSQL (1)
      • Docker (2)
      • PYTHON (24)
      • LeetCode 150 (39)
      • Algorithm ๊ธฐ๋ฒ• (1)
      • ๋ฐ”ํ‚น๋… (21)
    • ๋ธ”๋กœ๊ทธ ์ด์‚ฌ (0)
    • Error (1)
    • CS (15)
      • DataBase (2)
      • OS (7)
      • Network (1)
      • Spring (1)
      • ์ž๋ฃŒ๊ตฌ์กฐ (3)
      • Java (1)
    • Learned (7)
      • Spring (7)
    • ๊ฐœ๋ฐœ์„œ์  (15)
      • ๊ฐ€์ƒ ๋ฉด์ ‘ ์‚ฌ๋ก€๋กœ ๋ฐฐ์šฐ๋Š” ๋Œ€๊ทœ๋ชจ ์‹œ์Šคํ…œ ์„ค๊ณ„ ๊ธฐ์ดˆ (1)
      • ์˜ค๋ธŒ์ ํŠธ - ์กฐ์˜ํ˜ธ (7)
      • ์นœ์ ˆํ•œ SQL ํŠœ๋‹ (7)
    • ํšŒ๊ณ  (2)
hELLO ยท Designed By ์ •์ƒ์šฐ.
์šฐ๊ทœ์ด์ธ์šฐ์œค

Eager To Learn ๐ŸŒŒ

CS/DataBase

Index(์ธ๋ฑ์Šค)์— ๋Œ€ํ•ด์„œ ์•Œ์•„๋ณด์ž

2023. 7. 26. 16:21

 

Real MySQL ์ฑ…์„ ๊ณต๋ถ€ํ•˜๋ฉด์„œ ์ •๋ฆฌํ•œ ๋‚ด์šฉ์ž…๋‹ˆ๋‹ค.


 

 

๋ฐ์ดํ„ฐ๋ฒ ์ด์Šค์˜ ์„ฑ๋Šฅ ํŠœ๋‹์€ ์–ด๋–ป๊ฒŒ ๋””์Šคํฌ I/O๋ฅผ ์ค„์ด๋А๋ƒ๊ฐ€ ๊ด€๊ฑด์ผ๋•Œ๊ฐ€ ์ƒ๋‹นํžˆ ๋งŽ๋‹ค.

 

๐Ÿ’ก ๋ฐ์ดํ„ฐ๋ฒ ์ด์Šค ํ…Œ์ด๋ธ”์˜ ๋ชจ๋“  ๋ฐ์ดํ„ฐ๋ฅผ ๊ฒ€์ƒ‰ํ•ด์„œ ์›ํ•˜๋Š” ๊ฒฐ๊ณผ๋ฅผ ๊ฐ€์ ธ์˜ค๋ ค๋ฉด ์‹œ๊ฐ„์ด ์˜ค๋ž˜ ๊ฑธ๋ฆฐ๋‹ค.

 

๊ทธ๋ž˜์„œ ์นผ๋Ÿผ์˜ ๊ฐ’๊ณผ ํ•ด๋‹น ๋ ˆ์ฝ”๋“œ๊ฐ€ ์ €์žฅ๋œ ์ฃผ์†Œ๋ฅผ ํ‚ค์™€ ๊ฐ’์˜ ์Œ์œผ๋กœ ์‚ผ์•„ ์ธ๋ฑ์Šค๋ฅผ ๋งŒ๋“ค์–ด ๋‘”๋‹ค.

 

๊ทธ๋ฆฌ๊ณ  ์นผ๋Ÿผ์˜ ๊ฐ’์„ ์ฃผ์–ด์ง„ ์ˆœ์„œ๋กœ ๋ฏธ๋ฆฌ ์ •๋ ฌํ•ด์„œ ๋ณด๊ด€ํ•œ๋‹ค.

 

 

๐Ÿ’ก ์กฐํšŒ ์š”์ฒญ ์‹œ, ๋ฐ์ดํ„ฐ๊ฐ€ ์ •๋ ฌ๋˜์–ด ์žˆ๊ธฐ ๋•Œ๋ฌธ์— ๋นจ๋ฆฌ ์›ํ•˜๋Š” ๊ฐ’์„ ์ฐพ์•„์˜ฌ ์ˆ˜ ์žˆ๋‹ค. (SELECT)

๐Ÿšจ ๋ฐ์ดํ„ฐ๊ฐ€ ์ €์žฅ๋  ๋•Œ ๋งˆ๋‹ค ํ•ญ์ƒ ๊ฐ’์„ ์ •๋ ฌํ•ด์•ผ ํ•˜๋ฏ€๋กœ ์ €์žฅํ•˜๋Š” ๊ณผ์ •์ด ๋ณต์žกํ•˜๊ณ  ๋А๋ฆฌ๋‹ค. ( INSERT · UPDATE · DELETE )

 

๋ฐ์ดํ„ฐ ์ €์žฅ ๋ฐฉ์‹ ๋ณ„๋กœ ๊ตฌ๋ถ„ํ•˜๋ฉด, ๋Œ€ํ‘œ์ ์œผ๋กœ B-Tree ์ธ๋ฑ์Šค์™€ Hash ์ธ๋ฑ์Šค๋กœ ๊ตฌ๋ถ„ํ•  ์ˆ˜ ์žˆ๋‹ค.

 


B-Tree (Balanced-Tree) ์ธ๋ฑ์Šค

 

B-Tree๋Š” ์นผ๋Ÿผ์˜ ์›๋ž˜ ๊ฐ’์„ ๋ณ€ํ˜•์‹œํ‚ค์ง€ ์•Š๊ณ  ์ธ๋ฑ์Šค ๊ตฌ์กฐ์ฒด ๋‚ด์—์„œ๋Š” ํ•ญ์ƒ ์ •๋ ฌ๋œ ์ƒํƒœ๋กœ ์œ ์ง€ํ•œ๋‹ค.

 

์ถœ์ฒ˜ : https://velog.io/@ddongh1122/MySQL-B-Tree-%EC%9D%B8%EB%8D%B1%EC%8A%A4#4-%EC%9D%B8%EB%8D%B1%EC%8A%A4-%EC%8A%A4%ED%82%B5-%EC%8A%A4%EC%BA%94

 

B-Tree๋Š” ์ตœ์ƒ์œ„์— ํ•˜๋‚˜์˜ ๋ฃจํŠธ ๋…ธ๋“œ๊ฐ€ ์กด์žฌํ•˜๊ณ  ๊ทธ ํ•˜์œ„์— ์ž์‹ ๋…ธ๋“œ๊ฐ€ ๋ถ™์–ด์žˆ๋Š” ํ˜•ํƒœ์ด๋‹ค.

 

ํŠธ๋ฆฌ ๊ตฌ์กฐ์˜ ๊ฐ€์žฅ ํ•˜์œ„์— ์žˆ๋Š” ๋…ธ๋“œ๋ฅผ ๋ฆฌํ”„ ๋…ธ๋“œ๋ผ ํ•˜๊ณ  ์ค‘๊ฐ„์˜ ๋…ธ๋“œ๋ฅผ ๋ธŒ๋žœ์น˜ ๋…ธ๋“œ๋ผ๊ณ  ํ•œ๋‹ค.

 

๋ฆฌํ”„ ๋…ธ๋“œ๋Š” ํ•ญ์ƒ ์‹ค์ œ ๋ฐ์ดํ„ฐ ๋ ˆ์ฝ”๋“œ๋ฅผ ์ฐพ์•„๊ฐ€๊ธฐ ์œ„ํ•œ ์ฃผ์†Ÿ๊ฐ’์„ ๊ฐ€์ง€๊ณ  ์žˆ๋‹ค.

 

๊ฒ€์ƒ‰ํ•˜๋ ค๋Š” ์ธ๋ฑ์Šค์™€ ์ €์žฅ๋˜์–ด ์žˆ๋Š” ์ธ๋ฑ์Šค ๋ ˆ์ฝ”๋“œ๋ฅผ ๋น„๊ตํ•˜๋ฉด์„œ, ๊ฐ€๋ฆฌํ‚ค๋Š” ํ•˜์œ„ ํŽ˜์ด์ง€๋กœ ๊ณ„์† ์ด๋™ํ•˜๊ณ 

 

๋ฃจํŠธ ๋…ธ๋“œ์— ๋„๋‹ฌํ•ด, ๊ฒ€์ƒ‰ํ•˜๋ ค๋Š” ์ธ๋ฑ์Šค์™€ ์ผ์น˜ํ•˜๋Š” ๋ ˆ์ฝ”๋“œ๋ฅผ ๋ฐœ๊ฒฌํ•˜๊ณ , 

 

ํ•ด๋‹น ์ธ๋ฑ์Šค๊ฐ€ ํ‚ค๋กœ์„œ ๊ฐ’์„ ๊ฐ–๊ณ  ์žˆ๋Š” ๋ ˆ์ฝ”๋“œ ์ฃผ์†Œ๋กœ ์ฐพ์œผ๋ ค๋Š” ๋ฐ์ดํ„ฐ์— ์ ‘๊ทผํ•˜๊ฒŒ ๋œ๋‹ค.

 


 

 

๐Ÿ“Œ ์ธ๋ฑ์Šค ํ‚ค ์ถ”๊ฐ€ ๋ฐ ์‚ญ์ œ

 

1๏ธโƒฃ ์ธ๋ฑ์Šค ํ‚ค ์ถ”๊ฐ€

์ƒˆ๋กœ์šด ์ธ๋ฑ์Šค๊ฐ€ B-Tree ์— ์ €์žฅ๋  ๋•Œ๋Š” ์ €์žฅ๋  ํ‚ค ๊ฐ’์„ ์ด์šฉํ•ด B-Tree์ƒ์˜ ์ ์ ˆํ•œ ์œ„์น˜๋ฅผ ๊ฒ€์ƒ‰ํ•ด์•ผ ํ•œ๋‹ค.

 

์ €์žฅ๋  ์œ„์น˜๊ฐ€ ๊ฒฐ์ •๋˜๋ฉด ๋ ˆ์ฝ”๋“œ์˜ ํ‚ค๊ฐ’๊ณผ ํ•ด๋‹น ๋ ˆ์ฝ”๋“œ์˜ ์ฃผ์†Œ๊ฐ’์„ ๋ฆฌํ”„ ๋…ธ๋“œ์— ์ €์žฅํ•œ๋‹ค.

 

๐Ÿšจ ๋ฆฌํ”„ ๋…ธ๋“œ๊ฐ€ ๊ฝ‰ ์ฐฌ ๊ฒฝ์šฐ, ๋ฆฌํ”„ ๋…ธ๋“œ๊ฐ€ ๋ถ„๋ฆฌ๋˜์–ด์•ผ ํ•œ๋‹ค. ์ด๋•Œ ์ƒ์œ„ ๋ธŒ๋žœ์น˜ ๋…ธ๋“œ๊นŒ์ง€ ์ฒ˜๋ฆฌํ•ด์•ผ ํ•˜๋ฏ€๋กœ ๋น„์šฉ์ด ๋งŽ์ด ๋ฐœ์ƒํ•œ๋‹ค.

 

2๏ธโƒฃ ์ธ๋ฑ์Šค ํ‚ค ์‚ญ์ œ

์‚ญ์ œํ•˜๋ ค๋Š” ์ธ๋ฑ์Šค๋ฅผ ํ‚ค ๊ฐ’์œผ๋กœ ํ•˜๋Š” ๋ฆฌํ”„ ๋…ธ๋“œ๋ฅผ ์ฐพ์•„ ์‚ญ์ œํ•œ๋‹ค.

 

์‚ญ์ œ ๋œ ๊ณต๊ฐ„์€ ๋ฐฉ์น˜ํ•˜๊ฑฐ๋‚˜ ์žฌํ™œ์šฉํ•  ์ˆ˜ ์žˆ๋‹ค.

 

3๏ธโƒฃ ์ธ๋ฑ์Šค ํ‚ค ๋ณ€๊ฒฝ

์ธ๋ฑ์Šค๋ฅผ ๋ณ€๊ฒฝํ•˜๋Š” ์ž‘์—…์€ ํ•ด๋‹น ๋ฆฌํ”„ ๋…ธ๋“œ๋ฅผ ์ฐพ์•„์„œ ๋ณ€๊ฒฝํ•˜๋Š” ๊ฒƒ์œผ๋กœ ํ•ด๊ฒฐ๋˜์ง€ ์•Š๋Š”๋‹ค.

 

๋‹ค์‹œ ์ธ๋ฑ์Šค๋ฅผ ์ •๋ ฌํ•ด์•ผํ•˜๊ธฐ ๋•Œ๋ฌธ์ด๋‹ค.

 

๋”ฐ๋ผ์„œ, ๋ณ€๊ฒฝ ๊ณผ์ •์€ ๋ณ€๊ฒฝํ•˜๋ ค๋Š” ์ธ๋ฑ์Šค๋ฅผ ํ‚ค ๊ฐ’์œผ๋กœ ํ•˜๋Š” ๋ฆฌํ”„ ๋…ธ๋“œ๋ฅผ ์ฐพ์•„ ์‚ญ์ œํ•œ ํ›„ ๋ณ€๊ฒฝํ•  ์ธ๋ฑ์Šค๋ฅผ ์ƒˆ๋กœ ์ถ”๊ฐ€ํ•˜๋Š” ๋ฐฉ์‹์œผ๋กœ ์ง„ํ–‰๋œ๋‹ค.

 

4๏ธโƒฃ ์ธ๋ฑ์Šค ํ‚ค ๊ฒ€์ƒ‰

B-Tree ์ธ๋ฑ์Šค๋ฅผ ์ด์šฉํ•œ ๊ฒ€์ƒ‰์€ 100% ์ผ์น˜ ๋˜๋Š” ๊ฐ’์˜ ์•ž๋ถ€๋ถ„๋งŒ ์ผ์น˜ํ•˜๋Š” ๊ฒฝ์šฐ์— ์‚ฌ์šฉํ•  ์ˆ˜ ์žˆ๋‹ค.

 

InnoDB ์Šคํ† ๋ฆฌ์ง€ ์—”์ง„์˜ ๊ฒฝ์šฐ ๊ฒ€์ƒ‰์„ ์ˆ˜ํ–‰ํ•œ ์ธ๋ฑ์Šค๋ฅผ ์ž ๊ทผ ํ›„ ํ…Œ์ด๋ธ”์˜ ๋ ˆ์ฝ”๋“œ๋ฅผ ์ž ๊ทธ๋Š” ๋ฐฉ์‹์œผ๋กœ ๊ตฌํ˜„๋ผ ์žˆ๋‹ค.

 

๋”ฐ๋ผ์„œ, ํ…Œ์ด๋ธ”์— ์ ์ ˆํžˆ ์‚ฌ์šฉํ•  ์ˆ˜ ์žˆ๋Š” ์ธ๋ฑ์Šค๊ฐ€ ์—†์œผ๋ฉด ๋ถˆํ•„์š”ํ•˜๊ฒŒ ๋งŽ์€ ๋ ˆ์ฝ”๋“œ๋ฅผ ์ž ๊ธ€ ์ˆ˜ ์žˆ๊ธฐ ๋•Œ๋ฌธ์— ์ธ๋ฑ์Šค์˜ ์„ค๊ณ„๊ฐ€ ์ค‘์š”ํ•˜๊ณ  ๋งŽ์€ ๋ถ€๋ถ„์— ์˜ํ–ฅ์„ ๋ฏธ์นœ๋‹ค.

 


 

๐Ÿ“Œ ์ธ๋ฑ์Šค ์‚ฌ์šฉ์— ์˜ํ–ฅ์„ ๋ฏธ์น˜๋Š” ์š”์†Œ

 

1๏ธโƒฃ ์ธ๋ฑ์Šค ํ‚ค ๊ฐ’์˜ ํฌ๊ธฐ

InnoDB ์Šคํ† ๋ฆฌ์ง€ ์—”์ง„์€ ๋””์Šคํฌ์— ํŽ˜์ด์ง€ ๋‹จ์œ„๋กœ ๊ด€๋ฆฌํ•œ๋‹ค.

 

๋ฒ„ํผ ํ’€์—์„œ ๋ฐ์ดํ„ฐ๋ฅผ ๋ฒ„ํผ๋งํ•˜๋Š” ๊ธฐ๋ณธ ๋‹จ์œ„์ด๊ธฐ๋„ ํ•˜๋‹ค.

 

์ธ๋ฑ์Šค๋„ ํŽ˜์ด์ง€ ๋‹จ์œ„๋กœ ๊ด€๋ฆฌ๋œ๋‹ค.

 

๐Ÿ’ก ๋”ฐ๋ผ์„œ, ์ธ๋ฑ์Šค ์ž์ฒด์˜ ํฌ๊ธฐ๋Š” ํŽ˜์ด์ง€์— ์ธ๋ฑ์Šค๊ฐ€ ๋ช‡๊ฐœ ๋“ค์–ด๊ฐˆ ์ˆ˜ ์žˆ๋Š”์ง€๋ฅผ ๊ฒฐ์ •ํ•œ๋‹ค.

๐Ÿšจ ์ธ๋ฑ์Šค ํ‚ค ํฌ๊ธฐ๊ฐ€ ์ปค์งˆ ์ˆ˜๋ก ํ•œ ํŽ˜์ด์ง€์— ์ˆ˜์šฉํ•  ์ˆ˜ ์žˆ๋Š” ์ธ๋ฑ์Šค์˜ ์–‘์ด ์ค„์–ด๋“ค๊ณ , ์ด๋Š” ํŠน์ • ์กฐ๊ฑด์—์„œ ๋””์Šคํฌ ์ ‘๊ทผ์„ ์ถ”๊ฐ€์ ์œผ๋กœ ํ•˜๋„๋ก ๋งŒ๋“ค ์ˆ˜ ์žˆ๋‹ค.

๋”ฐ๋ผ์„œ, ๊ฐ€๋Šฅํ•˜๋ฉด ์ธ๋ฑ์Šค ํ‚ค ๊ฐ’์˜ ํฌ๊ธฐ๋Š” ์ž‘๊ฒŒ ๋งŒ๋“œ๋Š” ๊ฒƒ์ด ์ข‹๋‹ค.

 

2๏ธโƒฃ ์„ ํƒ๋„

์„ ํƒ๋„(Selectivity) ๋˜๋Š” ๊ธฐ์ˆ˜์„ฑ(Cardinality)๋Š” ๊ฑฐ์˜ ๊ฐ™์€ ์˜๋ฏธ๋กœ ์‚ฌ์šฉ๋˜๋ฉฐ,

 

๋ชจ๋“  ์ธ๋ฑ์Šค ํ‚ค ๊ฐ’ ๊ฐ€์šด๋ฐ ์œ ๋‹ˆํฌํ•œ ๊ฐ’์˜ ์ˆ˜๋ฅผ ์˜๋ฏธํ•œ๋‹ค.

 

์„ ํƒ๋„๊ฐ€ ๋†’์„ ์ˆ˜๋ก (์ค‘๋ณต ๋ฐ์ดํ„ฐ๊ฐ€ ์ ์„ ์ˆ˜๋ก) ํšจ์œจ์ ์œผ๋กœ ์ฒ˜๋ฆฌํ•  ์ˆ˜ ์žˆ๋‹ค.

 

๊ฒ€์ƒ‰ํ•˜๋ ค๋Š” ์ธ๋ฑ์Šค์™€ ์ผ์น˜ํ•˜๋Š” ๋ ˆ์ฝ”๋“œ๋ฅผ ๋ชจ๋‘ ์ฝ์€ ๋’ค ์ถ”๊ฐ€์ ์ธ ์กฐ๊ฑด์— ๋งŒ์กฑํ•˜๋Š” ๋ ˆ์ฝ”๋“œ๋ฅผ ์ฐพ์œผ๋ฏ€๋กœ,

 

์ค‘๋ณต๋˜๋Š” ์ธ๋ฑ์Šค๊ฐ€ ๋งŽ์•„์งˆ ์ˆ˜๋ก ์„ฑ๋Šฅ์ด ๋–จ์–ด์ง€๊ฒŒ ๋œ๋‹ค.

 

3๏ธโƒฃ ๋ ˆ์ฝ”๋“œ ๊ฑด์ˆ˜

์ผ๋ฐ˜์ ์ธ DBMS์˜ ์˜ตํ‹ฐ๋งˆ์ด์ €์—์„œ๋Š” ์ธ๋ฑ์Šค๋ฅผ ํ†ตํ•ด ๋ ˆ์ฝ”๋“œ 1๊ฑด์„ ์ฝ๋Š” ๊ฒƒ์ด 

 

ํ…Œ์ด๋ธ”์—์„œ ์ง์ ‘ ๋ ˆ์ฝ”๋“œ 1๊ฑด์„ ์ฝ๋Š” ๊ฒƒ๋ณด๋‹ค 4~5๋ฐฐ ์ •๋„ ๋น„์šฉ์ด ๋” ๋งŽ์ด ๋“œ๋Š” ์ž‘์—…์ธ ๊ฒƒ์œผ๋กœ ์˜ˆ์ธกํ•œ๋‹ค.

 

๐Ÿ’ก ๋”ฐ๋ผ์„œ, ์ธ๋ฑ์Šค๋ฅผ ํ†ตํ•ด ์ฝ์–ด์•ผ ํ•  ๋ ˆ์ฝ”๋“œ์˜ ๊ฑด์ˆ˜๊ฐ€ ์ „์ฒด ํ…Œ์ด๋ธ” ๋ ˆ์ฝ”๋“œ์˜ 20~25%๋ฅผ ๋„˜์–ด์„œ๋ฉด ์ธ๋ฑ์Šค๋ฅผ ์ด์šฉํ•˜์ง€ ์•Š๋Š” ๊ฒƒ์ด ํšจ์œจ์ ์ด๋‹ค.

 


๐Ÿ“Œ ์ธ๋ฑ์Šค ์Šค์บ” ๋ฐฉ์‹

 

1๏ธโƒฃ ์ธ๋ฑ์Šค ๋ ˆ์ธ์ง€ ์Šค์บ”

 

SELECT * FROM employees WHERE first_name BETWEEN 'Ebbe' AND 'Gad';

 

์œ„์™€ ๊ฐ™์ด first_name ์ด ์ธ๋ฑ์Šค ์นผ๋Ÿผ์ผ ๋•Œ, ๋ฒ”์œ„๋กœ ๊ฒ€์ƒ‰ํ•˜๋Š” ์ฟผ๋ฆฌ๊ฐ€ ์žˆ์„ ์ˆ˜ ์žˆ๋‹ค.

 

์ด ๊ฒฝ์šฐ ์ธ๋ฑ์Šค ๋ ˆ์ธ์ง€ ์Šค์บ”์„ ์‚ฌ์šฉํ•œ๋‹ค.

 

์ถœ์ฒ˜ : https://velog.io/@ddongh1122/MySQL-B-Tree-%EC%9D%B8%EB%8D%B1%EC%8A%A4#4-%EC%9D%B8%EB%8D%B1%EC%8A%A4-%EC%8A%A4%ED%82%B5-%EC%8A%A4%EC%BA%94

์œ„์™€ ๊ฐ™์ด, ์‹œ์ž‘ํ•ด์•ผ ํ•  ์œ„์น˜๋ฅผ ์ฐพ์œผ๋ฉด ๋ ˆ์ฝ”๋“œ๋ฅผ ์ˆœ์„œ๋Œ€๋กœ ์ฝ๋Š”๋‹ค.

 

์ˆœ์„œ๋Œ€๋กœ ์ฝ๋‹ค๊ฐ€ ๋ฉˆ์ถฐ์•ผ ํ•  ์œ„์น˜์— ๋‹ค๋‹ค๋ฅด๋ฉด ์ง€๊ธˆ๊นŒ์ง€ ์ฝ์€ ๋ ˆ์ฝ”๋“œ๋ฅผ ์‚ฌ์šฉ์ž์—๊ฒŒ ๋ฐ˜ํ™˜ํ•˜๊ณ  ์ฟผ๋ฆฌ๋ฅผ ๋๋‚ธ๋‹ค.

 

๐Ÿšจ ๋‹จ, ์ธ๋ฑ์Šค ํŽ˜์ด์ง€ ์ƒ์œผ๋กœ๋Š” ์ •๋ ฌ๋˜์–ด ์žˆ์ง€๋งŒ, ๋ ˆ์ฝ”๋“œ ์ฃผ์†Œ๋Š” ์ •๋ ฌ๋˜์–ด ์žˆ์ง€ ์•Š๋‹ค.

๋”ฐ๋ผ์„œ, ์ง€๊ธˆ๊นŒ์ง€ ์ฝ์€ ์ฟผ๋ฆฌ๋ฅผ ์‚ฌ์šฉ์ž์—๊ฒŒ ๋ฐ˜ํ™˜ํ• ๋•Œ, ๋žœ๋ค ๋””์Šคํฌ I/O๊ฐ€ ๋ ˆ์ฝ”๋“œ 1๊ฑด๋‹น 1๋ฒˆ ๋ฐœ์ƒํ•œ๋‹ค.

 

2๏ธโƒฃ ์ธ๋ฑ์Šค ํ’€ ์Šค์บ”

์ธ๋ฑ์Šค์˜ ์ฒ˜์Œ๋ถ€ํ„ฐ ๋๊นŒ์ง€ ๋ชจ๋‘ ์ฝ๋Š” ๋ฐฉ์‹์ด๋‹ค.

 

๋Œ€ํ‘œ์ ์œผ๋กœ, ์ฟผ๋ฆฌ์˜ ์กฐ๊ฑด์ ˆ์— ์‚ฌ์šฉ๋œ ์นผ๋Ÿผ์ด ์ธ๋ฑ์Šค์˜  ์ฒซ ๋ฒˆ์งธ ์นผ๋Ÿผ์ด ์•„๋‹Œ ๊ฒฝ์šฐ ์‚ฌ์šฉ๋œ๋‹ค.

 

์˜ˆ๋กœ, ์ธ๋ฑ์Šค๊ฐ€ (A, B, C) ์ˆœ์„œ๋กœ ๋งŒ๋“ค์–ด์ ธ์žˆ์„ ๋•Œ, ์ฟผ๋ฆฌ์˜ ์กฐ๊ฑด์ ˆ์ด B๋‚˜ C ์นผ๋Ÿผ์œผ๋กœ ๊ฒ€์ƒ‰ํ•˜๋Š” ๊ฒฝ์šฐ์ด๋‹ค.

 

๐Ÿšจ ๋‹จ, ๋ ˆ์ฝ”๋“œ ๊ฑด ์ˆ˜๊ฐ€ ์ ์€ ๊ฒฝ์šฐ ์ธ๋ฑ์Šค๋ฅผ ์‚ฌ์šฉํ•˜๋ฉด ์˜ค๋ฒ„ํ—ค๋“œ๊ฐ€ ๋ฐœ์ƒํ•˜๋ฏ€๋กœ, ํ…Œ์ด๋ธ” ์ „์ฒด๋ฅผ ์Šค์บ”ํ•˜๋Š”๊ฒŒ ํšจ์œจ์ ์ผ ์ˆ˜ ์žˆ์œผ๋ฉฐ

์ด์ „์— ์„ค๋ช…ํ–ˆ๋“ฏ์ด ์ „์ฒด ํ…Œ์ด๋ธ”์˜ 25%๋ฅผ ๋„˜์–ด๊ฐ€๋Š” ์Šค์บ”์ธ ๊ฒฝ์šฐ ์ธ๋ฑ์Šค ์Šค์บ”์ด ๋น„ํšจ์œจ์ ์ผ ์ˆ˜ ์žˆ๋‹ค.

 

3๏ธโƒฃ ๋ฃจ์Šค(Loose) ์ธ๋ฑ์Šค ์Šค์บ”

 

๋А์Šจํ•˜๊ฒŒ ๋“ฌ์„ฑ๋“ฌ์„ฑ ์ธ๋ฑ์Šค๋ฅผ ์ฝ๋Š” ๊ฒƒ์„ ์˜๋ฏธํ•œ๋‹ค.

 

์ฃผ๋กœ GROUP BY ๋˜๋Š” MAX() , MIN() ํ•จ์ˆ˜์— ๋Œ€ํ•ด ์ตœ์ ํ™”๋ฅผ ํ•˜๋Š” ๊ฒฝ์šฐ์— ์‚ฌ์šฉ๋œ๋‹ค.

 

์ถœ์ฒ˜ : https://velog.io/@ddongh1122/MySQL-B-Tree-%EC%9D%B8%EB%8D%B1%EC%8A%A4#4-%EC%9D%B8%EB%8D%B1%EC%8A%A4-%EC%8A%A4%ED%82%B5-%EC%8A%A4%EC%BA%94

์œ„ ๊ทธ๋ฆผ์˜ ๊ฒฝ์šฐ, dept_no ์™€ emp_no ์ปฌ๋Ÿผ์ด ์ธ๋ฑ์Šค๋กœ ์‚ฌ์šฉ๋˜๋Š”๋ฐ,

 

SELECT dept_no, MIN(emp_no) FROM dept_emp WHERE dep_no BETWEEN 'd001' AND 'd004' GROUP BY dept_no;

์œ„์™€ ๊ฐ™์€ ์ฟผ๋ฆฌ์˜ ๊ฒฝ์šฐ, ๊ฐ ์ธ๋ฑ์Šค ๋ฃจํŠธ ํŽ˜์ด์ง€์˜ ์ฒซ ๋ฒˆ์งธ ๋ ˆ์ฝ”๋“œ๋งŒ ๊ฐ€์ ธ์˜ค๋ฉด ๋˜๋ฏ€๋กœ ๋ฃจ์Šค ์ธ๋ฑ์Šค ์Šค์บ”์„ ํ•  ์ˆ˜ ์žˆ๋‹ค.

 

์œ„์™€ ๊ฐ™์ด, ๋ฃจ์Šค ์ธ๋ฑ์Šค ์Šค์บ”์„ ์‚ฌ์šฉํ•˜๋ ค๋ฉด ์ œ์•ฝ ์กฐ๊ฑด์ด ํ•„์š”ํ•˜๋‹ค.

 

4๏ธโƒฃ ์ธ๋ฑ์Šค ์Šคํ‚ต ์Šค์บ”

 

์ธ๋ฑ์Šค๋ฅผ (A,B) ๋กœ ์„ค์ •ํ•˜๋ฉด, WHERE ์กฐ๊ฑด์ ˆ์— B๋งŒ ์‚ฌ์šฉํ•˜๋Š” ์ฟผ๋ฆฌ๋Š” ์ธ๋ฑ์Šค๋ฅผ ์‚ฌ์šฉํ•  ์ˆ˜ ์—†๋‹ค.

 

ํ•˜์ง€๋งŒ, MySQL 8.0 ๋ถ€ํ„ฐ๋Š” B ๋งŒ์œผ๋กœ๋„ ์ธ๋ฑ์Šค ๊ฒ€์ƒ‰์ด ๊ฐ€๋Šฅํ•˜๊ฒŒ ํ•ด์ฃผ๋Š” ์ธ๋ฑ์Šค ์Šคํ‚ต ์Šค์บ” ์ตœ์ ํ™” ๊ธฐ๋Šฅ์ด ๋„์ž…๋˜์—ˆ๋‹ค.

 

// ์ธ๋ฑ์Šค๊ฐ€ (gender, birth_date) ์ผ ๋•Œ
SELECT gender, birth_date FROM employees WHERE birth_date >= '1970-01-01';

 

์œ„ ์ฟผ๋ฆฌ๋Š” ์ธ๋ฑ์Šค ์Šคํ‚ต ์Šค์บ”์ด ์—†๋‹ค๋ฉด, ์ธ๋ฑ์Šค ํŽ˜์ด์ง€ ํ’€ ์Šค์บ”์„ ํ•œ๋‹ค.

 

ํ•˜์ง€๋งŒ, ์ธ๋ฑ์Šค ์Šคํ‚ต ์Šค์บ”์„ ํ•˜๋Š” ๊ฒฝ์šฐ ์•„๋ž˜์™€ ๊ฐ™๋‹ค.

์œ„ ์ฒ˜๋Ÿผ, ์ธ๋ฑ์Šค ํ’€ ์Šค์บ”์„ ํ•˜๋Š” ๊ฒƒ์ด ์•„๋‹Œ

 

SELECT gender, birth_date FROM employees WHERE gender = 'M' and birth_date >= '1905-02-01';

SELECT gender, birth_date FROM employees WHERE gender = 'F' and birth_date >= '1965-02-01';

 

์œ„์™€ ๊ฐ™์€ ์ฟผ๋ฆฌ 2๊ฐœ๋ฅผ ์‹คํ–‰ํ•œ ๊ฒƒ๊ณผ ๋น„์Šทํ•œ ํ˜•ํƒœ์˜ ์ตœ์ ํ™”๋ฅผ ํ•˜๊ฒŒ ๋œ๋‹ค.

 

 

๐Ÿšจ ๋‹จ, ์„ ํ–‰ ์ธ๋ฑ์Šค์˜ ์„ ํƒ๋„๊ฐ€ ๋„ˆ๋ฌด ๋†’์œผ๋ฉด ์Šค์บ” ์‹œ์ž‘์ ์„ ๋„ˆ๋ฌด ๋งŽ์ด ๊ฒ€์ƒ‰ํ•ด์•ผํ•ด์„œ ์„ฑ๋Šฅ์ด ๋–จ์–ด์งˆ ์ˆ˜ ์žˆ๋‹ค. (์ตœ์ ํ™”๋œ ์ฟผ๋ฆฌ ๊ฐฏ์ˆ˜๊ฐ€ ๋Š˜์–ด๋‚œ๋‹ค.)

๊ทธ๋ฆฌ๊ณ  ์ธ๋ฑ์Šค๋กœ ์ง€์ •๋œ ์ปฌ๋Ÿผ์œผ๋กœ ์ฒ˜๋ฆฌ ๊ฐ€๋Šฅํ•œ ์ฟผ๋ฆฌ์—ฌ์•ผ ์ตœ์ ํ™”๋ฅผ ํ•  ์ˆ˜ ์žˆ๋‹ค.

( SELECT * FROM ์„ ํ•ด๋ฒ„๋ฆฌ๋ฉด ์ธ๋ฑ์Šค๋กœ ์ง€์ •๋œ ์ปฌ๋Ÿผ ์™ธ์— ๋‹ค๋ฅธ ์ปฌ๋Ÿผ๋„ ํ•„์š”ํ•ด์ง€๋ฏ€๋กœ ์ธ๋ฑ์Šค ์Šคํ‚ต ์Šค์บ”์„ ์‚ฌ์šฉํ•  ์ˆ˜ ์—†๋‹ค.)

 


 

๐Ÿ“Œ B-tree ์ธ๋ฑ์Šค ์ •๋ ฌ๊ณผ ์„ฑ๋Šฅ

 

MySQL 8.0 ๋ถ€ํ„ฐ๋Š” ์ •๋ ฌ ์ˆœ์„œ๋ฅผ ํ˜ผํ•ฉํ•œ ์ธ๋ฑ์Šค๋ฅผ ์ƒ์„ฑํ•  ์ˆ˜ ์žˆ๋‹ค.

 

CREATE INDEX ix_index ON employees (column1 ASC , column2 DESC);

์œ„์™€ ๊ฐ™์ด ์ธ๋ฑ์Šค๋ฅผ ์„ค์ •ํ•  ์นผ๋Ÿผ์— ์ •๋ ฌ ๋ฐฉ๋ฒ•์„ ๋ช…์‹œํ•˜๋ฉด ๋œ๋‹ค.

 

 

โ“ ๋งŒ์•ฝ ์˜ค๋ฆ„์ฐจ์ˆœ์œผ๋กœ ์„ค์ •ํ•œ ์ธ๋ฑ์Šค๋ฅผ ์—ญ์ˆœ์œผ๋กœ ์ •๋ ฌํ•ด์„œ ๋ ˆ์ฝ”๋“œ 1๊ฑด์„ ์กฐํšŒํ•˜๋Š” ์ฟผ๋ฆฌ๋Š” ์–ด๋–ป๊ฒŒ ์‹คํ–‰๋ ๊นŒ?

 

๐Ÿ’ก ์ธ๋ฑ์Šค ์ƒ์„ฑ ์‹œ, ์˜ค๋ฆ„์ฐจ์ˆœ์œผ๋กœ ์„ค์ •ํ–ˆ๊ธฐ ๋•Œ๋ฌธ์— ์˜ค๋ฆ„์ฐจ์ˆœ์œผ๋กœ ์ญ‰ ์ฝ๋‹ค๊ฐ€ ๋งˆ์ง€๋ง‰ ๋ ˆ์ฝ”๋“œ๋ฅผ ์ฝ๋Š” ๊ฒƒ์ด ์•„๋‹ˆ๋ผ

 

์˜ตํ‹ฐ๋งˆ์ด์ €๋Š” ์ธ๋ฑ์Šค๋ฅผ ์—ญ์ˆœ์œผ๋กœ ์ ‘๊ทผํ•œ ๋’ค, ์ฒซ๋ฒˆ์งธ ๋ ˆ์ฝ”๋“œ๋งŒ ์ฝ์–ด์˜ค๋„๋ก ํ•œ๋‹ค.

 

 

โ“ ๊ทธ๋ ‡๋‹ค๋ฉด ์„ฑ๋Šฅ์€ ๋™์ผํ• ๊นŒ?

 

์ƒ๊ฐํ•ด๋ณด์ž.

 

id ์นผ๋Ÿผ์ด ์˜ค๋ฆ„์ฐจ์ˆœ์ธ ์ธ๋ฑ์Šค๋ผ๊ณ  ๊ฐ€์ •ํ•˜๋ฉด, ์ „์ฒด ๋ ˆ์ฝ”๋“œ ์กฐํšŒ ์‹œ ์ˆœ์„œ๋Œ€๋กœ ์ฝ์œผ๋ฉด ๋œ๋‹ค.

 

๊ทธ๋ฆฌ๊ณ  ์—ญ์ˆœ์œผ๋กœ ์กฐํšŒ ์š”์ฒญ์„ ํ–ˆ์„๋•Œ๋Š” ์˜ตํ‹ฐ๋งˆ์ด์ €๊ฐ€ ์ธ๋ฑ์Šค๋ฅผ ๊ธฐ์ค€์œผ๋กœ ๋’ค์—์„œ๋ถ€ํ„ฐ ์กฐํšŒํ•˜๋„๋ก ํ•  ๊ฒƒ์ด๋‹ค.

 

์‹คํ—˜ ๊ฒฐ๊ณผ, 1์ฒœ 2๋ฐฑ์—ฌ๋งŒ ๊ฑด์„ ์Šค์บ”ํ–ˆ์„ ๋•Œ, ์•ฝ 1.2์ดˆ ์ •๋„ ์ฐจ์ด๊ฐ€ ๋‚˜๋Š” ๊ฒƒ์„ ํ™•์ธํ•  ์ˆ˜ ์žˆ๋‹ค.

 

์•ฝ 28.9% ๋” ์‹œ๊ฐ„์ด ๊ฑธ๋ฆฌ๋Š” ๊ฒƒ์ด๋‹ค.

 

์ด๋Ÿฌํ•œ ์„ฑ๋Šฅ ์ฐจ์ด๊ฐ€ ๋ฐœ์ƒํ•˜๋Š” ์ด์œ ๋Š” ๋‹ค์Œ๊ณผ ๊ฐ™๋‹ค.

 

 

์œ„์™€ ๊ฐ™์ด, ํŽ˜์ด์ง€ ๋‚ด์—์„œ ์ธ๋ฑ์Šค ๋ ˆ์ฝ”๋“œ๋Š” ๋‹จ๋ฐฉํ–ฅ์œผ๋กœ ์—ฐ๊ฒฐ๋œ ๊ตฌ์กฐ์ด๋‹ค.

 

๋”ฐ๋ผ์„œ, ์ดˆ๊ธฐ์— ์„ค์ •ํ•œ ์ธ๋ฑ์Šค์˜ ๋ฐฉํ–ฅ์˜ ๋ฐ˜๋Œ€๋˜๋Š” ์งˆ์˜๋ฅผ ํ•˜๋ฉด, ์ถ”๊ฐ€์ ์ธ ๋น„์šฉ์ด ๋ฐœ์ƒํ•˜๋Š” ๊ฒƒ์ด๋‹ค.

 

 


์ „๋ฌธ ๊ฒ€์ƒ‰ ์ธ๋ฑ์Šค

B-Tree ์ธ๋ฑ์Šค๋Š” ์ „์ฒด ์ผ์น˜ ๋˜๋Š” ์ขŒ์ธก ์ผ๋ถ€ ์ผ์น˜์™€ ๊ฐ™์€ ๊ฒ€์ƒ‰๋งŒ ๊ฐ€๋Šฅํ•˜๋‹ค.

 

๋ฌธ์„œ์˜ ๋‚ด์šฉ ์ „์ฒด๋ฅผ ์ธ๋ฑ์Šคํ™”ํ•ด์„œ ํŠน์ • ํ‚ค์›Œ๋“œ๊ฐ€ ํฌํ•จ๋œ ๋ฌธ์„œ๋ฅผ ๊ฒ€์ƒ‰ํ•˜๋Š” ์ „๋ฌธ ๊ฒ€์ƒ‰์—๋Š” ์‚ฌ์šฉํ•  ์ˆ˜ ์—†๋‹ค.

 

์ „๋ฌธ ๊ฒ€์ƒ‰์„ ์œ„ํ•œ ์ธ๋ฑ์Šค๋Š” B-Tree ์ธ๋ฑ์Šค๊ฐ€ ์•„๋‹Œ

 

๐Ÿ’ก ๋ฌธ์„œ ์ „์ฒด์— ๋Œ€ํ•œ ๋ถ„์„๊ณผ ๊ฒ€์ƒ‰์„ ์œ„ํ•œ ์ธ๋ฑ์‹ฑ ์•Œ๊ณ ๋ฆฌ์ฆ˜์„ ์ ์šฉํ•œ ์ „๋ฌธ ๊ฒ€์ƒ‰ ์ธ๋ฑ์Šค๋ฅผ ์‚ฌ์šฉํ•ด์•ผ ํ•œ๋‹ค.

 

 

 

๐Ÿ“Œ n-gram ์•Œ๊ณ ๋ฆฌ์ฆ˜

n-gram์—์„œ n์€ ์ธ๋ฑ์‹ฑํ•  ํ‚ค์›Œ๋“œ์˜ ์ตœ์†Œ ๊ธ€์ž ์ˆ˜๋ฅผ ์˜๋ฏธํ•˜๊ณ , ์ด ๊ธ€์ž์ˆ˜๋ฅผ ๋‹จ์œ„๋กœ ํ‚ค์›Œ๋“œ๋ฅผ ์ชผ๊ฐœ์„œ ์ธ๋ฑ์‹ฑํ•˜๋Š” ๋ฐฉ์‹์ด๋‹ค.

 

That is the question

์œ„์™€ ๊ฐ™์€ ๋ฌธ์žฅ์ด ์žˆ์„ ๋•Œ, 2-gram ์•Œ๊ณ ๋ฆฌ์ฆ˜์„ ์‚ฌ์šฉํ•˜๋ฉด

That Th ha at        
is is            
the th he          
question qu ue es st ti io on

์œ„์™€ ๊ฐ™์ด ๋‹จ์–ด 2๊ฐœ๋กœ ์ชผ๊ฐœ์–ด ํ† ํฐ์œผ๋กœ ๋งŒ๋“ค๊ณ , ๊ฒ€์ƒ‰์—์„œ ๊ฐ€์น˜๊ฐ€ ์—†๋Š” ๋‹จ์–ด๋“ค์„ ํ•„ํ„ฐ๋งํ•ด์„œ ์ œ๊ฑฐํ•œ๋‹ค.

 

๊ทธ๋ฆฌ๊ณ  ๋‚จ์€ ํ† ํฐ๋“ค์„ ์ธ๋ฑ์Šค๋กœ ์ €์žฅํ•œ๋‹ค.

 

 

๐Ÿ“Œ ์ „๋ฌธ ๊ฒ€์ƒ‰ ์ธ๋ฑ์Šค ์‚ฌ์šฉ ์กฐ๊ฑด

 

์ „๋ฌธ ๊ฒ€์ƒ‰ ์ธ๋ฑ์Šค๋ฅผ ์‚ฌ์šฉํ•˜๊ธฐ ์œ„ํ•ด์„œ๋Š” 

 

SELECT * FROM tb WHERE MATCH(doc_body) AGAINST('์• ํ”Œ' IN BOOLEAN MODE);

 

์œ„์™€ ๊ฐ™์ด MATCH() .. AGAINST() ๋ฌธ๋ฒ•์„ ์‚ฌ์šฉํ•ด์•ผํ•œ๋‹ค.

 

์œ„ ๋ฌธ์ ‘์„ ์‚ฌ์šฉํ•˜์ง€ ์•Š์œผ๋ฉด, ํ’€ ํ…Œ์ด๋ธ” ์Šค์บ”์œผ๋กœ ์ฟผ๋ฆฌ๊ฐ€ ์ฒ˜๋ฆฌ๋  ์ˆ˜ ์žˆ๋‹ค.

 

    'CS/DataBase' ์นดํ…Œ๊ณ ๋ฆฌ์˜ ๋‹ค๋ฅธ ๊ธ€
    • MySQL ์˜ตํ‹ฐ๋งˆ์ด์ €
    ์šฐ๊ทœ์ด์ธ์šฐ์œค
    ์šฐ๊ทœ์ด์ธ์šฐ์œค
    ๊ฐœ๋ฐœ์ž ๊ฟˆ๋‚˜๋ฌด

    ํ‹ฐ์Šคํ† ๋ฆฌํˆด๋ฐ”