[๋ฐ์ดํ„ฐ๋ฒ ์ด์Šค] - ์ธ๋ฑ์Šค

2024. 3. 31. 22:46ยท ๐Ÿ“–์Šคํ„ฐ๋””/๋ฐ์ดํ„ฐ๋ฒ ์ด์Šค
๋ชฉ์ฐจ
  1. ์ธ๋ฑ์Šค๋ž€?
  2. Multi Column Index
  3. Index ๊ตฌ์กฐ
  4. ๋™์ž‘ ๋ฐฉ์‹ (์ž๋ฃŒ๊ตฌ์กฐ)
  5. Index๋ฅผ ์„ค์ •ํ•  ๋•Œ ๊ณ ๋ ค์‚ฌํ•ญ
  6. ์ธ๋ฑ์Šค ์„ค์ • ๊ธฐ์ค€

์ธ๋ฑ์Šค๋ž€?

์ถ”๊ฐ€์ ์ธ ์“ฐ๊ธฐ ์ž‘์—…๊ณผ ์ €์žฅ๊ณต๊ฐ„์„ ํ™œ์šฉํ•˜์—ฌ ๋ฐ์ดํ„ฐ๋ฒ ์ด์Šค ํ…Œ์ด๋ธ”์˜ ๊ฒ€์ƒ‰ ์†๋„๋ฅผ ํ–ฅ์ƒํ•˜๊ธฐ ์œ„ํ•œ ์ž๋ฃŒ ๊ตฌ์กฐ

์ฆ‰, index๋ž€ ๋ฐ์ดํ„ฐ์˜ ์ฃผ์†Œ๊ฐ’์„ ์ €์žฅํ•˜๋Š” ๋ณ„๋„์˜ ํŠน๋ณ„ํ•œ ์ž๋ฃŒ ๊ตฌ์กฐ์ด๋‹ค. index๋ฅผ ํ™œ์šฉํ•ด์„œ ๋น ๋ฅด๊ฒŒ ์›ํ•˜๋Š” ๋ฐ์ดํ„ฐ๋ฅผ ์ฐพ์„ ์ˆ˜ ์žˆ๋‹ค.

 

How Does Indexing Work (Posted by Tim Miller)

 

- DBํ…Œ์ด๋ธ”์— ์ธ๋ฑ์Šค๊ฐ€ ํ•„์š”ํ•œ ์ด์œ 

  • ์›ํ•˜๋Š” ๋ฐ์ดํ„ฐ๋ฅผ ์ฐพ๊ณ  ์‹ถ์„ ๋•Œ ํ…Œ์ด๋ธ” ์ „์ฒด๋ฅผ ํ’€์Šค์บ”(full scan) ํ•ด์•ผ ํ•œ๋‹ค.
  • Full Scan ์‹œ๊ฐ„ ๋ณต์žก๋„ : O(N)
  • Index๋ฅผ ์‚ฌ์šฉํ•œ ๊ฒฝ์šฐ ์‹œ๊ฐ„ ๋ณต์žก๋„(B tree) : O(logN)

 

- ์ธ๋ฑ์Šค๋ฅผ ์‚ฌ์šฉํ•˜๋Š” ์ด์œ 

  • ์กฐ๊ฑด์— ๋งŒ์กฑํ•˜๋Š” ํŠœํ”Œ(๋“ค)์„ ๋น ๋ฅด๊ฒŒ ์กฐํšŒํ•˜๊ธฐ ์œ„ํ•ด์„œ
  • ๋น ๋ฅด๊ฒŒ ์ •๋ ฌ(order by)ํ•˜๊ฑฐ๋‚˜ ๊ทธ๋ฃนํ•‘(group by) ํ•˜๊ธฐ ์œ„ํ•ด

 

- ์ธ๋ฑ์Šค ์„ค์ •ํ•˜๋Š” ๋ฐฉ๋ฒ•

 

- ์ด๋ฏธ ํ…Œ์ด๋ธ”๊ณผ ๋ฐ์ดํ„ฐ๊ฐ€ ์กด์žฌํ•  ๊ฒฝ์šฐ

CREATE TABLE PLAYER(
  id INT PRIMARY KEY,
  name VARCHAR(255) NOT NULL,
  team_id INT NOT NULL,
  back_number INT NOT NULL
);

 

์ฟผ๋ฆฌ๋ฌธ
SELECT * FROM player WHERE name = "Sonny";
SELECT * FROM player WHERE team_id = 105 AND back_number = 7;

 

์•„๋ž˜๋Š” ํ…Œ์ด๋ธ”๊ณผ ์ฟผ๋ฆฌ๋ฌธ์ด ์žˆ์„๋•Œ ์ธ๋ฑ์Šค๋ฅผ ์ƒ์„ฑํ•˜๋Š” ๋ฐฉ๋ฒ•์ด๋‹ค.

-- single column index
CREATE INDEX player_name_idx ON player(name);

-- multi column index
CREATE UNIQUE INDEX team_id_back_number_idx ON player(team_id, back_number);

 

 

- ํ…Œ์ด๋ธ” ์ƒ์„ฑ์‹œ Index ์ƒ์„ฑ

CREATE TABLE PLAYER(
    id INT PRIMARY KEY,
    name VARCHAR(255) NOT NULL,
    team_id INT NOT NULL,
    back_number INT NOT NULL,
    INDEX player_name_idx(name),
    UNIQUE INDEX team_id_back_number_idx(team_id, back_number)
);

 

 

 


Multi Column Index

1) ๊ณ ๋ ค์‚ฌํ•ญ

-- multi column index
CREATE UNIQUE INDEX team_id_back_number_idx ON player(team_id, back_number);

 

๐Ÿค” ์–ด๋–ค ๊ฒฝ์šฐ์— multi column index๋ฅผ ์ƒ์„ฑ์„ ๊ณ ๋ คํ•ด์•ผ ํ• ๊นŒ?
๐Ÿ’ก WHERE์ ˆ์—์„œ AND ์—ฐ์‚ฐ์ž์— ์˜ํ•ด ์ž์ฃผ ๊ฐ™์ด ์งˆ์˜๋˜๋Š” ์นผ๋Ÿผ์ธ ๊ฒฝ์šฐ
- ํ•œ ์นผ๋Ÿผ์—๋งŒ ์ธ๋ฑ์Šค๋ฅผ ์ƒ์„ฑํ•˜์˜€๋‹ค๋ฉด AND ์กฐ๊ฑด์—์„œ ์ธ๋ฑ์Šค๊ฐ€ ์•„๋‹Œ ์นผ๋Ÿผ์„ ์ฐพ๋Š” ์—ฐ์‚ฐ์ž์˜ ๊ฒฝ์šฐ์—” ํ’€์Šค์บ”์ด๋‹ค.
- ๊ทธ๋Ÿฌ๋ฏ€๋กœ Multi Column Index ์„ค์ •์„ ๊ณ ๋ คํ•ด์•ผ ํ•œ๋‹ค.

 

๐Ÿค” ์ƒ์„ฑํ•  ๋•Œ ์–ด๋–ค ์ˆœ์„œ๋กœ ์ •๋ ฌ๋˜๋Š” ๊ฑธ๊นŒ?
๐Ÿ’ก ์•ž์— ์˜ค๋Š” ์ˆœ์œผ๋กœ ์ •๋ ฌ๋œ๋‹ค. INDEX(a, b)  a๋ถ€ํ„ฐ ์ •๋ ฌ

 

๐Ÿค” WHERE back_number = 7 ์กฐ๊ฑด๋ฌธ์ด ๋“ค์–ด์˜ค๋ฉด ์„ฑ๋Šฅ์€ ์–ด๋–จ๊นŒ?
๐Ÿ’ก ์œ„์˜ ์ƒ์„ฑ๋œ Multi Column Index๋Š” ์šฐ์„  team_id๋ฅผ ๊ธฐ์ค€์œผ๋กœ ์ •๋ ฌ๋˜์–ด ์žˆ๊ธฐ ๋•Œ๋ฌธ์— ํ’€ ์Šค์บ”๊ณผ ๊ฐ™๊ฑฐ๋‚˜ ์ข‹์ง€ ์•Š์„ ์ˆ˜๋„ ์žˆ๋‹ค

 

2) ์žฅ์ 

Covering Index

SELECT team_id, back_number FROM player WHERE team_id = 5;

๋ชจ๋“  Attribute๋ฅผ ๊ฐ€์ ธ์˜ค๋Š” ๊ฒƒ์ด ์•„๋‹Œ ์ธ๋ฑ์Šค๋กœ ์„ค์ •ํ•œ ์ •๋ณด๋งŒ ๊ฐ€์ง€๊ณ  ์˜จ๋‹ค. ๊ทธ๋Ÿฌ๋ฉด ์ธ๋ฑ์Šค์—์„œ ๊ฒ€์ƒ‰ํ•œ ์ดํ›„ ๋ฌผ๋ฆฌ์ ์ธ ๋ฐ์ดํ„ฐ ๋ธ”๋ก์„ ์ฝ์„ ํ•„์š”๊ฐ€ ์—†๋‹ค.

  • ์กฐํšŒํ•˜๋Š” attribute(s)๋ฅผ index๊ฐ€ ๋ชจ๋‘ cover ํ•  ๋•Œ ์กฐํšŒ ์„ฑ๋Šฅ์ด ๋” ๋น ๋ฅด๋‹ค.

 


Index ๊ตฌ์กฐ

- Single-Level Ordered Indexes

  • ๊ฐ ์—”ํŠธ๋ฆฌ๋Š” <ํƒ์ƒ‰ ํ‚ค, ๋ ˆ์ฝ”๋“œ์— ๋Œ€ํ•œ ํฌ์ธํ„ฐ>
  • ์—”ํŠธ๋ฆฌ๋“ค์€ ํƒ์ƒ‰ ํ‚ค๊ฐ’์˜ ์˜ค๋ฆ„์ฐจ์ˆœ์œผ๋กœ ์ •๋ ฌ๋œ๋‹ค.

๊ฒฝ๋ถ๋Œ€ํ•™๊ต ์ปดํ“จํ„ฐํ•™๋ถ€ ์ˆ˜์—… ์ž๋ฃŒ

โœŒ๏ธ1) Primary Index(๊ธฐ๋ณธ ์ธ๋ฑ์Šค) | sparse index

  • ํƒ์ƒ‰ ํ‚ค ๊ฐ’์— ๋”ฐ๋ผ ์ •๋ ฌ๋œ ๋ฐ์ดํ„ฐ ํŒŒ์ผ์— ๋Œ€ํ•ด ์ •์˜
  • ํƒ์ƒ‰ ํ‚ค๊ฐ€ ํ…Œ์ด๋ธ”์˜ ๊ธฐ๋ณธ ํ‚ค(Primary key)์ธ ์ธ๋ฑ์Šค

โ€ป
Dense index : ๋ชจ๋“  key value์— ๋Œ€ํ•ด index entry๋ฅผ ์ค€๋‹ค. ์ฆ‰, ๋ชจ๋“  ๋ ˆ์ฝ”๋“œ์— ๋Œ€ํ•ด ์ƒ‰์ธ์„ ๋งŒ๋“ ๋‹ค.
Sparse index : ๋ช‡๋ช‡ ๊ฐ’์— ๋Œ€ํ•ด์„œ๋งŒ entry๋ฅผ ๋งŒ๋“ ๋‹ค. ๋Œ€๋ถ€๋ถ„ ๊ธฐ๋ณธ์ ์œผ๋กœ sparse index๋ฅผ ์‚ฌ์šฉํ•œ๋‹ค. Primary index๋„ sparse index์ด๋‹ค.

 

โœŒ๏ธ2) Clustering index (ํด๋Ÿฌ์Šคํ„ฐ๋ง ์ธ๋ฑ์Šค) | sparse index

  • ํƒ์ƒ‰ ํ‚ค ๊ฐ’์— ๋”ฐ๋ผ ์ •๋ ฌ๋œ ๋ฐ์ดํ„ฐ ํŒŒ์ผ์— ๋Œ€ํ•ด ์ •์˜
  • ๋งŽ์€ ๋ ˆ์ฝ”๋“œ๊ฐ€ ordering field์— ๋Œ€ํ•œ ๊ณตํ†ต๋œ ๊ฐ’์„ ๊ฐ€์งˆ ๊ฒฝ์šฐ ์‚ฌ์šฉํ•  ์ˆ˜ ์žˆ๋‹ค.

 

โœŒ๏ธ3) Secondary index (๋ณด์กฐ ์ธ๋ฑ์Šค) | dense index

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

Multi-Level Indexes

  • ์ธ๋ฑ์Šค ์ž์ฒด๊ฐ€ ํฐ ๊ฒฝ์šฐ ์ธ๋ฑ์Šค๋ฅผ ํƒ์ƒ‰ํ•˜๋Š” ์‹œ๊ฐ„๋„ ์˜ค๋ž˜ ๊ฑธ๋ฆด ์ˆ˜ ์žˆ๋‹ค.
  • ์ธ๋ฑ์Šค ์—”ํŠธ๋ฆฌ๋ฅผ ํƒ์ƒ‰ํ•˜๋Š” ์‹œ๊ฐ„์„ ์ค„์ด๊ธฐ ์œ„ํ•ด์„œ Single-Lever Ordered Indexes๋ฅผ ๋””์Šคํฌ ์ƒ์˜ ํ•˜๋‚˜์˜ ์ˆœ์„œ ํŒŒ์ผ๋กœ ์ƒ๊ฐํ•˜๊ณ , ์ด๊ฒƒ์— ๋Œ€ํ•ด ๋‹ค์‹œ ์ธ๋ฑ์Šค๋ฅผ ์ •์˜ํ•  ์ˆ˜ ์žˆ๋‹ค.
  • ๊ฐ€์žฅ ์ƒ์œ„ ๋‹จ๊ณ„ ์ธ๋ฑ์Šค๋ฅผ ๋งˆ์Šคํ„ฐ ์ธ๋ฑ์Šค(Master index)
  • ๋Œ€๋ถ€๋ถ„์€ B+ํŠธ๋ฆฌ๋ฅผ ์‚ฌ์šฉ

.

 

 

 


๋™์ž‘ ๋ฐฉ์‹ (์ž๋ฃŒ๊ตฌ์กฐ)

๋ฐ์ดํ„ฐ๋ฒ ์ด์Šค ์ธ๋ฑ์Šค์— ์ž์ฃผ ์“ฐ์ด๋Š” ์ž๋ฃŒ๊ตฌ์กฐ๋Š” B-Tree, B+Tree, Hash Table์ด๋‹ค.

- B-tree

  • ์‹œ๊ฐ„ ๋ณต์žก๋„ : O (LogN)
  • B-tree๋ž€ ์ž์‹ ๋…ธ๋“œ๊ฐ€ 2๊ฐœ ์ด์ƒ์ธ ํŠธ๋ฆฌ
  • ๊ท ํ˜• ํŠธ๋ฆฌ(Balanced Tree)๋กœ์จ, ์ตœ์ƒ์œ„ ๋ฃจํŠธ ๋…ธ๋“œ์—์„œ ๋ฆฌํ”„ ๋…ธ๋“œ๊นŒ์ง€์˜ ๊ฑฐ๋ฆฌ๊ฐ€ ๋ชจ๋‘ ๋™์ผ

- B+tree

  • B+Tree๋Š” B-Tree๋ฅผ ํ™•์žฅ ๋ฐ ๊ฐœ์„ ํ•œ ์ž๋ฃŒ ๊ตฌ์กฐ
  • ๋ฐ์ดํ„ฐ์˜ ๋น ๋ฅธ ์ ‘๊ทผ์„ ์œ„ํ•œ ์ธ๋ฑ์Šค ์—ญํ• ๋งŒ ํ•˜๋Š” ๋น„๋‹จ๋ง ๋…ธ๋“œ(Not Leaf)๊ฐ€ ๋ถ„๋ฆฌ๋˜์–ด ์žˆ๋‹ค.
  • ๊ด€๊ณ„ํ˜• DB์—์„œ ๊ฐ€์žฅ ๋งŽ์ด ์‚ฌ์šฉ๋œ๋‹ค.

- Hash Table

  • ์‹œ๊ฐ„ ๋ณต์žก๋„ : O(1) 

    ๐Ÿค”๋‹จ์ˆœ ์‹œ๊ฐ„ ๋ณต์žก๋„๋กœ๋งŒ ๋ณด๋ฉด ์ œ์ผ ๋น ๋ฅธ๋ฐ ์™œ B Tree๊ณ„์–ผ์„ ์‚ฌ์šฉํ• ๊นŒ?

โœŒ๏ธHash Table ๋‹จ์ 

  • ํ•ด์‹œ๋Š” ๋“ฑํ˜ธ(=.!=) ์—ฐ์‚ฐ์—๋งŒ ํŠนํ™”๋˜์–ด ์žˆ์–ด ๋ถ€๋“ฑํ˜ธ ์—ฐ์‚ฐ(<, <=)์ด ์ž์ฃผ ์‚ฌ์šฉ๋˜๋Š” ๋ฐ์ดํ„ฐ๋ฒ ์ด์Šค ๊ฒ€์ƒ‰์—๋Š” ํ…Œ์ด๋ธ”์ด ์ ํ•ฉํ•˜์ง€ ์•Š๋‹ค.
    ์ฆ‰, equality๋น„๊ต๋งŒ ๊ฐ€๋Šฅํ•˜๊ณ  range ๋น„๊ต๋Š” ๋ถˆ๊ฐ€๋Šฅํ•˜๋‹ค.
  • Multi Column Index์˜ ๊ฒฝ์šฐ, ์ „์ฒด Attributes์— ๋Œ€ํ•œ ์กฐํšŒ๋งŒ ๊ฐ€๋Šฅํ•˜๋‹ค.
    B Tree ๊ธฐ๋ฐ˜์˜ ์ธ๋ฑ์Šค์—์„œ๋Š” INDEX(a, b)๋Š” ์ƒํ™ฉ์— ๋”ฐ๋ผ a์นผ๋Ÿผ์œผ๋กœ ์กฐํšŒ๊ฐ€ ๊ฐ€๋Šฅํ•˜๋‹ค.
    ํ•˜์ง€๋งŒ, Hash Index๋Š” ๋ฌด์กฐ๊ฑด ๋‘ ์นผ๋Ÿผ ๋ชจ๋‘ ์‚ฌ์šฉํ•ด์„œ ์กฐํšŒํ•ด์•ผ ํ•œ๋‹ค.

 

- ์™œ Index๋กœ B tree ๊ณ„์—ด์ด ์‚ฌ์šฉ๋ ๊นŒ?

โœŒ๏ธSecondary Storage (SSD or HDD)

  • ๋ฐ์ดํ„ฐ๋ฅผ ์ฒ˜๋ฆฌํ•˜๋Š” ์†๋„๊ฐ€ ๊ฐ€์žฅ ๋А๋ฆฌ๋‹ค
  • ๋””์Šคํฌ I/O (ํŠนํžˆ ๋žœ๋ค I/O)๊ฐ€ ๋งŽ์ด ๋ฐœ์ƒํ•˜๋ฉด ๋А๋ฆฌ๋‹ค.
  • ๋ฐ์ดํ„ฐ๋ฅผ ์ €์žฅํ•˜๋Š” ์šฉ๋Ÿ‰์ด ๊ฐ€์žฅ ํฌ๋‹ค.
  • Block๋‹จ์œ„๋กœ ๋ฐ์ดํ„ฐ๋ฅผ ์ฝ๊ณ  ์“ด๋‹ค.
    ์ด๋•Œ ๋ฐ์ดํ„ฐ๋ฒ ์ด์Šค๋Š” Secondary Storage์— ์ €์žฅ๋œ๋‹ค.

์œ„์˜ ํŠน์ง•์„ ๊ณ ๋ คํ–ˆ์„ ๋•Œ ๋ฐ์ดํ„ฐ๋ฒ ์ด์Šค์—์„œ ๋ฐ์ดํ„ฐ๋ฅผ ์กฐํšŒํ•  ๋•Œ Secondary Storage์— ์ตœ๋Œ€ํ•œ ์ ๊ฒŒ ์ ‘๊ทผํ•˜๋Š” ๊ฒƒ์ด ์„ฑ๋Šฅ๋ฉด์—์„œ ์ข‹๋‹ค.
(๋ฐ์ดํ„ฐ๋ฒ ์ด์Šค์˜ I/O๋Š” ๋””์Šคํฌ๋ฅผ ํ†ตํ•ด ๋ฌผ๋ฆฌ์ ์ธ ์ž‘์—…์„ ๊ฑฐ์น˜๊ธฐ ๋•Œ๋ฌธ)

๋˜ํ•œ Block ๋‹จ์œ„๋กœ ์ฝ๊ณ  ์“ฐ๊ธฐ ๋•Œ๋ฌธ์— ์—ฐ๊ด€๋œ ๋ฐ์ดํ„ฐ๋ฅผ ๋ชจ์•„์„œ ์ €์žฅํ•˜๋ฉด ๋” ํšจ์œจ์ ์œผ๋กœ ์ฝ๊ณ  ์“ธ ์ˆ˜ ์žˆ๋‹ค.

๐Ÿ—’๏ธ์ •๋ฆฌ

  • Secondary Storage์— ์ตœ๋Œ€ํ•œ ์ ๊ฒŒ ์ ‘๊ทผํ•ด์•ผ ํ•œ๋‹ค.
  • B Tree ๊ณ„์—ด์„ ์‚ฌ์šฉํ•˜๋ฉด ๋‹ค๋ฅธ ํŠธ๋ฆฌ๋ณด๋‹ค ๋ฐ์ดํ„ฐ๋ฅผ ์ฐพ์„ ๋•Œ ํƒ์ƒ‰ ๋ฒ”์œ„๋ฅผ ๋น ๋ฅด๊ฒŒ ์ขํž ์ˆ˜ ์žˆ๋‹ค.
  • B Tree ๋…ธ๋“œ๋Š” ์—ฌ๋Ÿฌ ๊ฐœ์˜ ๋ฐ์ดํ„ฐ๋ฅผ ์ €์žฅํ•  ์ˆ˜ ์žˆ๋‹ค. ( ์—ฌ๋Ÿฌ ๊ฐœ์˜ ์ž๋…€ ๋…ธ๋“œ๋ฅผ ๊ฐ€์งˆ ์ˆ˜ ์žˆ๋‹ค.)

 


Index๋ฅผ ์„ค์ •ํ•  ๋•Œ ๊ณ ๋ ค์‚ฌํ•ญ

-  ์„ฑ๋Šฅ์ €ํ•˜

  • ํ…Œ์ด๋ธ”์— witer ์ž‘์—… (INSERT, DELETE, UPDATE)์„ ํ•  ๋•Œ index๋„ ์ถ”๊ฐ€์ ์ธ ์—ฐ์‚ฐ์ด ๋ฐœ์ƒ
  • ์ถ”๊ฐ€์ ์ธ ์ €์žฅ๊ณต๊ฐ„ ์ฐจ์ง€

-  Full scan์ด ์„ฑ๋Šฅ์ด ๋” ์ข‹์€ ๊ฒฝ์šฐ

  • full scan์„ ํ• ์ง€ ์—ฌ๋ถ€๋Š” optimizer๊ฐ€ ํŒ๋‹จ

-  ํ…Œ์ด๋ธ”์— ๋ฐ์ดํ„ฐ๊ฐ€ ์กฐ๊ธˆ ์žˆ์„ ๋•Œ

์ถœ์ฒ˜: DB Index ๋™์ž‘์›๋ฆฌ๋ฅผ ์•Œ์•„๋ณด์ž (Post by Eric's DevLog (๋ฐ๋ธŒ๋กœ๊ทธ))

-  ์กฐํšŒํ•˜๋ ค๋Š” ๋ฐ์ดํ„ฐ๊ฐ€ ํ…Œ์ด๋ธ”์˜ ์ƒ๋‹น ๋ถ€๋ถ„์„ ์ฐจ์ง€ํ•  ๋•Œ

๋ณดํ†ต ์ „์ฒด ๋ฐ์ดํ„ฐ์˜ 5~10% ์ •๋„๋กœ ๊ฑธ๋Ÿฌ์ง€๋Š” ๊ฒฝ์šฐ index๋ฅผ ์‚ฌ์šฉํ–ˆ์„ ๋•Œ ์ข‹์€ ํšจ์œจ์„ ๋‚ผ ์ˆ˜ ์žˆ๋‹ค.
์ „์ฒด ๋ฐ์ดํ„ฐ 20%๋ฅผ ๋„˜์–ด๊ฐ€๋Š” ๊ฒฝ์šฐ์—๋Š” full scan์ด ๋น ๋ฅผ ์ˆ˜ ์žˆ๋‹ค.

 

 


์ธ๋ฑ์Šค ์„ค์ • ๊ธฐ์ค€

- Cardinality ( ์นด๋””๋„๋ฆฌํ‹ฐ )

  • ์นด๋””๋„๋ฆฌํ‹ฐ๊ฐ€ ๋†’์„์ˆ˜๋ก ์ธ๋ฑ์Šค ์„ค์ •์— ์ข‹์€ ์นผ๋Ÿผ์ด๋‹ค. ( ํ•œ ์นผ๋Ÿผ์ด ๊ฐ–๊ณ  ์žˆ๋Š” ๊ฐ’์˜ ์ค‘๋ณต ์ •๋„๊ฐ€ ๋‚ฎ์„์ˆ˜๋ก ์ข‹๋‹ค.)
  • ์ธ๋ฑ์Šค๋ฅผ ํ†ตํ•ด ๋ถˆํ•„์š”ํ•œ ๋ฐ์ดํ„ฐ์˜ ๋Œ€๋ถ€๋ถ„์€ ๊ฑธ๋Ÿฌ๋‚ผ ์ˆ˜ ์žˆ๋‹ค.

- Selectivity ( ์„ ํƒ๋„ )

    • ์„ ํƒ๋„๊ฐ€ ๋‚ฎ์„์ˆ˜๋ก ์ธ๋ฑ์Šค ์„ค์ •์— ์ข‹์€ ์นผ๋Ÿผ์ด๋‹ค. (์ผ๋ฐ˜์ ์œผ๋กœ 5~10% ์ ๋‹น)
    • ์„ ํƒ๋„๊ฐ€ ๋‚ฎ๋‹ค๋Š” ์˜๋ฏธ๋Š” ํ•œ ์นผ๋Ÿผ์ด ๊ฐ–๊ณ  ์žˆ๋Š” ๊ฐ’ ํ•˜๋‚˜๋กœ ์ ์€ row๊ฐ€ ์ฐพ์•„์ง€๋Š” ๊ฒƒ์„ ์˜๋ฏธํ•œ๋‹ค.
โ€ป
์„ ํƒ๋„ ๊ณ„์‚ฐ๋ฒ• (์ „์ฒด ๋ ˆ์ฝ”๋“œ ์ค‘์—์„œ ์กฐ๊ฑด์ ˆ์— ์˜ํ•ด ์„ ํƒ๋˜๋Š” ๋ ˆ์ฝ”๋“œ ๋น„์œจ)
: ์นผ๋Ÿผ์˜ ํŠน์ • ๊ฐ’์˜ row ์ˆ˜ / ํ…Œ์ด๋ธ”์˜ ์ด row ์ˆ˜ * 100

-  ํ™œ์šฉ๋„

  • ํ™œ์šฉ๋„๊ฐ€ ๋†’์„์ˆ˜๋ก ์ธ๋ฑ์Šค ์„ค์ •์— ์ข‹์€ ์นผ๋Ÿผ์ด๋‹ค.

-  ์ˆ˜์ • ๋นˆ๋„

  • ์ˆ˜์ • ๋นˆ๋„๊ฐ€ ๋‚ฎ์„์ˆ˜๋ก ์ธ๋ฑ์Šค ์„ค์ •์— ์ข‹์€ ์นผ๋Ÿผ์ด๋‹ค.
  • ์ธ๋ฑ์Šค ์„ค์ •๋œ ์นผ๋Ÿผ์ด ๊ฐ’์ด ๋ฐ”๋€Œ๊ฒŒ ๋œ๋‹ค๋ฉด ์ธ๋ฑ์Šค๋„ ์ƒˆ๋กœ ๊ฐฑ์‹ ํ•ด์ฃผ์–ด์•ผ ํ•˜๊ธฐ ๋•Œ๋ฌธ์ด๋‹ค.

 

๋”๋ณด๊ธฐ

์ถœ์ฒ˜ : github.com/devSquad-study

 

'๐Ÿ“–์Šคํ„ฐ๋”” > ๋ฐ์ดํ„ฐ๋ฒ ์ด์Šค' ์นดํ…Œ๊ณ ๋ฆฌ์˜ ๋‹ค๋ฅธ ๊ธ€

[๋ฐ์ดํ„ฐ๋ฒ ์ด์Šค] - B-Tree & B+Tree  (0) 2024.04.01
[๋ฐ์ดํ„ฐ๋ฒ ์ด์Šค] - ํŠธ๋ฆฌ๊ฑฐ  (0) 2024.03.27
[๋ฐ์ดํ„ฐ๋ฒ ์ด์Šค] - ์ €์žฅ ํ”„๋กœ์‹œ์ €  (0) 2024.03.27
  1. ์ธ๋ฑ์Šค๋ž€?
  2. Multi Column Index
  3. Index ๊ตฌ์กฐ
  4. ๋™์ž‘ ๋ฐฉ์‹ (์ž๋ฃŒ๊ตฌ์กฐ)
  5. Index๋ฅผ ์„ค์ •ํ•  ๋•Œ ๊ณ ๋ ค์‚ฌํ•ญ
  6. ์ธ๋ฑ์Šค ์„ค์ • ๊ธฐ์ค€
'๐Ÿ“–์Šคํ„ฐ๋””/๋ฐ์ดํ„ฐ๋ฒ ์ด์Šค' ์นดํ…Œ๊ณ ๋ฆฌ์˜ ๋‹ค๋ฅธ ๊ธ€
  • [๋ฐ์ดํ„ฐ๋ฒ ์ด์Šค] - Join
  • [๋ฐ์ดํ„ฐ๋ฒ ์ด์Šค] - B-Tree & B+Tree
  • [๋ฐ์ดํ„ฐ๋ฒ ์ด์Šค] - ํŠธ๋ฆฌ๊ฑฐ
  • [๋ฐ์ดํ„ฐ๋ฒ ์ด์Šค] - ์ €์žฅ ํ”„๋กœ์‹œ์ €
mmmhmm
mmmhmm
๋„ค๋ชจํ•˜๋‚˜ ๋™๊ทธ๋ผ๋ฏธ ๋‘๊ฐœ
์ „์ฒด
์˜ค๋Š˜
์–ด์ œ
mmmhmm
hmmumm
mmmhmm
  • ๋ถ„๋ฅ˜ ์ „์ฒด๋ณด๊ธฐ (49)
    • ๐Ÿ–ฅ๏ธํ”„๋กœ์ ํŠธ (3)
    • ๐Ÿ’กํ”„๋กœ์ ํŠธ ๋ฌธ์ œํ•ด๊ฒฐ (5)
    • ๐Ÿ”ฆ๊ณต๋ถ€ ๋ฌธ์ œํ•ด๊ฒฐ๊ณผ์ • (2)
    • ๐Ÿ“–์Šคํ„ฐ๋”” (38)
      • ๋ฐ์ดํ„ฐ๋ฒ ์ด์Šค (10)
      • ์Šคํ”„๋ง (6)
      • ๋„คํŠธ์›Œํฌ (10)
      • ์šด์˜์ฒด์ œ (12)
hELLO ยท Designed By ์ •์ƒ์šฐ.v4.2.2
mmmhmm
[๋ฐ์ดํ„ฐ๋ฒ ์ด์Šค] - ์ธ๋ฑ์Šค
์ƒ๋‹จ์œผ๋กœ

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

๋‹จ์ถ•ํ‚ค

๋‚ด ๋ธ”๋กœ๊ทธ

๋‚ด ๋ธ”๋กœ๊ทธ - ๊ด€๋ฆฌ์ž ํ™ˆ ์ „ํ™˜
Q
Q
์ƒˆ ๊ธ€ ์“ฐ๊ธฐ
W
W

๋ธ”๋กœ๊ทธ ๊ฒŒ์‹œ๊ธ€

๊ธ€ ์ˆ˜์ • (๊ถŒํ•œ ์žˆ๋Š” ๊ฒฝ์šฐ)
E
E
๋Œ“๊ธ€ ์˜์—ญ์œผ๋กœ ์ด๋™
C
C

๋ชจ๋“  ์˜์—ญ

์ด ํŽ˜์ด์ง€์˜ URL ๋ณต์‚ฌ
S
S
๋งจ ์œ„๋กœ ์ด๋™
T
T
ํ‹ฐ์Šคํ† ๋ฆฌ ํ™ˆ ์ด๋™
H
H
๋‹จ์ถ•ํ‚ค ์•ˆ๋‚ด
Shift + /
โ‡ง + /

* ๋‹จ์ถ•ํ‚ค๋Š” ํ•œ๊ธ€/์˜๋ฌธ ๋Œ€์†Œ๋ฌธ์ž๋กœ ์ด์šฉ ๊ฐ€๋Šฅํ•˜๋ฉฐ, ํ‹ฐ์Šคํ† ๋ฆฌ ๊ธฐ๋ณธ ๋„๋ฉ”์ธ์—์„œ๋งŒ ๋™์ž‘ํ•ฉ๋‹ˆ๋‹ค.