MapleStory Finger Point Cute Line Smiley Blinking Hello Kitty Angel MapleStory Finger Point

๐Ÿ’Ž DataBase/๐Ÿ’Ž SQL-PL,SQL

หšโ‚Šโœฉโ€งโ‚Š [SQL] INDEX ์ธ๋ฑ์Šค หšโ‚Šโœฉโ€งโ‚Š

HYEJU01 2024. 6. 20. 02:41

[ INDEX ์ธ๋ฑ์Šค ์˜๋ฏธ]

์ฃผ์†Œ๋ก ๊ฐ™์€ ๊ฐœ๋…์œผ๋กœ ๋ฐ์ดํ„ฐ์˜ ์ฃผ์†Œ๊ฐ’์„ ๊ฐ€์ง€๊ณ  ์žˆ๋Š” ๊ฒƒ์„ ์ธ๋ฑ์Šค๋ผ๊ณ  ํ•œ๋‹ค.

์ธ๋ฑ์Šค๊ฐ€ ์žˆ๋‹ค๋ฉด Table Full Scan ์—†์ด ์›ํ•˜๋Š” ๋ธ”๋ก ์ฃผ์†Œ๋ฅผ ์ฐพ์•„๋‚ด ๊ทธ ๋ธ”๋ก๋งŒ ๋ฉ”๋ชจ๋ฆฌ๋กœ ๋ณต์‚ฌํ•ด์™€ ๋น ๋ฅธ ์ž‘์—…์ด ๊ฐ€๋Šฅํ•˜๋‹ค.

 

* ๋ฐ์ดํ„ฐ๋ฒ ์ด์Šค ์„ฑ๋Šฅ๊ณผ ์—ฐ๊ด€๋˜์–ด์žˆ๋Š” ์ค‘์š”ํ•œ ๊ฐœ๋…

* ์ƒ์„ฑ, ๊ด€๋ฆฌ๋ฅผ ์ž˜๋ชปํ•œ ๊ฒฝ์šฐ ์˜คํžˆ๋ ค ์„ฑ๋Šฅ ์—ญํšจ๊ณผ (์ฃผ์˜ํ•ด์„œ ๋งŒ๋“ค์–ด์•ผํ•จ)

 

 


[์ƒ์„ฑ์›๋ฆฌ]

Table Full Scan  -> Sort ์ •๋ ฌ -> Block ๊ธฐ๋ก

ํ…Œ์ด๋ธ” ๋‚ด์šฉ ์ฝ์–ด์„œ ๋ฉ”๋ชจ๋ฆฌ๋กœ ๊ฐ€์ ธ์˜ด -> ๋ฉ”๋ชจ๋ฆฌ ์ •๋ ฌ (PGA-sort , ๋ถ€์กฑ์‹œ temporary tablespace ์‚ฌ์šฉํ•ด์„œ ์ •๋ ฌ)  ->  ์ธ๋ฑ์Šค๋ฅผ ์ €์žฅํ•˜๋Š” ๋ธ”๋ก์— ์ˆœ์„œ๋Œ€๋กœ ๋ฐ์ดํ„ฐ ๊ธฐ๋ก 

 

์ฆ‰, ์ธ๋ฑ์Šค๋Š” ๋ฐ์ดํ„ฐ๊ฐ€ ์ •๋ ฌ๋˜์–ด ๋“ค์–ด๊ฐ„๋‹ค.

 

 

[Single Block I/O]

์ธ๋ฑ์Šค๋ฅผ ์‚ฌ์šฉํ•ด์„œ 1๋ฒˆ์—1๊ฐœ ๋ธ”๋ก๋งŒ ์ฝ์–ด์„œ ๋ฉ”๋ชจ๋ฆฌ๋กœ ๊ฐ€์ ธ์˜ค๋Š” ๊ฒƒ

 

[Multi Block I/O]

์ธ๋ฑ์Šค๋ฅผ ์‚ฌ์šฉํ•˜์ง€ ์•Š๊ณ  ๋ฉ”๋ชจ๋ฆฌ๋กœ ์—ฌ๋Ÿฌ ๋ธ”๋ก์„ ํ•œ๋ฒˆ์— ๊ฐ€์ ธ์˜ค๋Š” ๊ฒƒ

 

 


[B-TREE INDEX]

 

 

  • root block - Branch blocks ์ฃผ์†Œ ์ •๋ณด
  • Branch blocks  - leaf block ์ •๋ณด 
  • leaf block - ๋ฐ์ดํ„ฐ ๋ธ”๋ก๋“ค์˜ ์ฃผ์†Œ 

๋ฐ์ดํ„ฐ๋ฅผ ์ฐพ์„ ๋•Œ๋Š” ์œ„(ROOT BLOCK)์—์„œ ๋ถ€ํ„ฐ ์ฐพ๋Š”๋‹ค. !!

 

 


1) UNIQUE INDEX

key ๊ฐ’์— ์ค‘๋ณต๋˜๋Š” ๋ฐ์ดํ„ฐ๊ฐ€ ์—†๋‹ค


2) NON-UNIQUE INDEX

์ค‘๋ณต๋˜๋Š” ๋ฐ์ดํ„ฐ๊ฐ€ ๋“ค์–ด๊ฐ€์•ผ๋งŒ ํ•˜๋Š” ์ปฌ๋Ÿผ


3) Function Based INDEX ํ•จ์ˆ˜๊ธฐ๋ฐ˜ ์ธ๋ฑ์Šค

where ์กฐ๊ฑด์ปฌ๋Ÿผ, ์กฐ์ธ์ปฌ๋Ÿผ์— ์ฃผ๋กœ ์ธ๋ฑ์Šค๋ฅผ ๋งŒ๋“ ๋‹ค.

์ธ๋ฑ์Šค๋ฅผ ์‚ฌ์šฉํ•˜๋ ค๋ฉด where์กฐ๊ฑด์„ ๋‹ค๋ฅธํ˜•ํƒœ๋กœ ๊ฐ€๊ณตํ•˜์ง€์•Š๋Š”๋‹ค!!

- ๊ฐ€๊ณต์‹œ INDEX Suppressing Error


4) DESCENDING INDEX ๋‚ด๋ฆผ์ฐจ์ˆœ ์ธ๋ฑ์Šค

ํฐ ๊ฐ’์ด ๋จผ์ € ์˜ค๋„๋ก ๋‚ด๋ฆผ์ฐจ์ˆœ์œผ๋กœ ์ธ๋ฑ์Šค ์ƒ์„ฑ

ํฐ ๊ฐ’์„ ๋งŽ์ด ์กฐํšŒํ•˜๋Š” SQL ์— ์ฃผ๋กœ ์ƒ์„ฑ

 

 

5) Composite INDEX ๊ฒฐํ•ฉ ์ธ๋ฑ์Šค

๋‘๊ฐœ ์ด์ƒ ์ปฌ๋Ÿผ์„ ํ•ฉ์ณ์„œ ์ธ๋ฑ์Šค๋ฅผ ๋งŒ๋“œ๋Š” ๊ฒƒ

where์ ˆ ์กฐ๊ฑด ์ปฌ๋Ÿผ์ด 2๊ฐœ ์ด์ƒ AND๋กœ ์—ฐ๊ฒฐ๋˜์–ด ํ•จ๊ป˜ ์‚ฌ์šฉ๋˜๋Š” ๊ฒฝ์šฐ

 


[BITMAP INDEX]

- ๋ฐ์ดํ„ฐ ๊ฐ’์˜ ์ข…๋ฅ˜๊ฐ€ ์ ๊ณ  , ๋™์ผํ•œ ๋ฐ์ดํ„ฐ๊ฐ€ ๋งŽ์„ ๊ฒฝ์šฐ ์‚ฌ์šฉ 

์˜ˆ) ์„ฑ๋ณ„ ์ปฌ๋Ÿผ ๊ฐ’ ์ข…๋ฅ˜

- ๋ฐ์ดํ„ฐ ๋ณ€๊ฒฝ๋Ÿ‰์ด ์ ๊ฑฐ๋‚˜ ์—†์–ด์•ผํ•œ๋‹ค.

์ฆ‰, ๋ฐ์ดํ„ฐ ๋ณ€๊ฒฝ์ด ์•ˆ๋˜๋Š” ํ…Œ์ด๋ธ”๊ณผ ๊ฐ’์˜ ์ข…๋ฅ˜๊ฐ€ ์ž‘์€ ์ปฌ๋Ÿผ์— ์ƒ์„ฑํ•ด์•ผ ์œ ๋ฆฌํ•จ

 


[์ฃผ์˜์‚ฌํ•ญ]

์ธ๋ฑ์Šค๋ฅผ ์ƒ์„ฑํ•˜๋ฉด SQL ์ด ๋นจ๋ผ์ง„๋‹ค ?

์˜คํžˆ๋ ค FULL TABLE SCAN ์„ ํ•˜๋Š” ๊ฒฝ์šฐ๊ฐ€ ๋น ๋ฅธ ๊ฒฝ์šฐ๋„ ์žˆ๋‹ค.

 

- DML ์— ์ทจ์•ฝํ•˜๋‹ค

DML ์ด ๋ฐœ์ƒํ•˜๋Š” ํ…Œ์ด๋ธ”์€ ์ธ๋ฑ์Šค๋ฅผ ์ตœ์†Œํ•œ์œผ๋กœ ๋งŒ๋“ค์–ด์•ผํ•œ๋‹ค.

 

Insert: ์ธ๋ฑ์Šค ๋ธ”๋ก๋“ค์ด ๋‘๊ฐœ๋กœ ๋‚˜๋ˆ ์ง€๋Š” ํ˜„์ƒ ๋ฐœ์ƒ -> INDEX Split ํ˜„์ƒ ๋ฐœ์ƒ

(์‚ฌ์šฉํ•˜์ง€ ์•Š๋Š” ์ธ๋ฑ์Šค๋Š” ์ง€์›Œ์•ผํ•˜๋Š”์ด์œ  !!!)

 

Delete : ๋ฐ์ดํ„ฐ๊ฐ€ ์ง€์›Œ์ ธ๋„ ์ธ๋ฑ์Šค๋Š” ์ง€์›Œ์ง€์ง€ ์•Š๊ณ  ์‚ฌ์šฉ ์•ˆ๋œ๋‹ค๋Š”

ํ‘œ์‹œ๋งŒ(์ธ๋ฑ์Šค์—์„  ๋ฐ์ดํ„ฐ๊ฐ€ ์ง€์›Œ์ง€์ง€ ์•Š์Œ) ๋œฌ๋‹ค.

 

Update : ์ธ๋ฑ์Šค์—์„œ delete -> insert ์ž‘์—…์ด ๋ฐœ์ƒํ•˜๊ฒŒ ๋œ๋‹ค. (๋™์‹œ์— ์ผ์–ด๋‚˜์„œ ํฐ ๋ถ€ํ•˜ ์ผ์œผํ‚ด)

 


- ํƒ€ SQL ์‹คํ–‰์— ์•…์˜ํ–ฅ์„ ์ค„ ์ˆ˜ ์žˆ๋‹ค

์ž˜ ์ˆ˜ํ–‰๋˜๋˜ sql ๋ฌธ์žฅ์ด ์ƒˆ๋กœ์šด ์ธ๋ฑ์Šค๋•Œ๋ฌธ์— ๋Š๋ ค์ง€๋Š” ๊ฒฝ์šฐ

๋‹ค๋ฅธ sql ๋ฌธ์žฅ๋„ ๊ณ ๋ คํ•ด์„œ ์ธ๋ฑ์Šค๋ฅผ ์ƒ์„ฑํ•ด์•ผํ•œ๋‹ค.



[๊ด€๋ฆฌ๋ฒ•]
์กฐํšŒ
๋ชจ๋‹ˆํ„ฐ๋ง
INDEX Rebuild ํ•˜๊ธฐ

[Invisible Index ์ธ๋น„์ €๋ธ” ์ธ๋ฑ์Šค]