INDEX๋ฅผ ์ฌ์ฉํ๋ ๊ฐ์ฅ ํฐ ์ด์ ๋ ์๋์ ํฅ์์ ์ํด์ ์ฌ์ฉ๋ฉ๋๋ค. INDEX ๊ตฌ์กฐ๋ฅผ ๋ง๋ค์ด์ฃผ๋ฉด FULL SCAN์์ ๋ชจ๋ ํ ์ด๋ธ ๋ฐ์ดํฐ๋ฅผ ์ฝ์ด์ค๋ ๋ฐฉ๋ฒ๊ณผ๋ ๋ค๋ฅด๊ฒ ROOT - BRANCH - LEAF - DATA BLOCK์ด 4๋ฒ์ IO๋ฅผ ํตํด์ ์ ๊ทผ์ด ๊ฐ๋ฅํฉ๋๋ค. ๋ฐ์ดํฐ๊ฐ 100๊ฑด์ด๋ 100๋ง๊ฑด์ด๋ ์๋์ฐจ์ด๋ ๋ง์ด ์๋๋ค๋ ์ฅ์ ์ด ์์ต๋๋ค.
INDEX๋?
๋ชจ๋ ํ ์ด๋ธ์๋ ROWID๋ผ๋ ์นผ๋ผ์ด ์์ต๋๋ค. ROWID = FILE ๋ฒํธ + BLOCK ๋ฒํธ + ROW๋ฒํธ๋ก ๊ตฌ์ฑ๋์ด ์์ต๋๋ค. "7๋ฒํ์ผ์ 132๋ฒ ๋ธ๋ก์ 3๋ฒ์งธ" ์ด๋ฐ ์์ผ๋ก ํด๋น ๋ฐ์ดํฐ์ ์ฃผ์๋ผ๊ณ ๋ณผ ์ ์์ต๋๋ค. INDEX๋ ์ด๋ฐ ROWID๋ฅผ ํตํด DATA BLOCK์ ์ ๊ทผ ํฉ๋๋ค. INDEX๋ ๋ฐ์ดํฐ๋ฅผ ๋น ๋ฅด๊ฒ ์ฐพ๊ธฐ ์ํด ์ค๋ฆ์ฐจ์์ผ๋ก ์ ๋ ฌ๋ ์ฃผ์์ฒด๊ณ๋ผ๊ณ ํํํ๊ณ ์ถ์ต๋๋ค.
INDEX๋ ROOT, BRANCH, LEAF๋ก ๊ตฌ์ฑ๋์ด ์๋ ๊ณ์ธต์ ๊ตฌ์กฐ๋ฅผ ๊ฐ๊ณ ์์ต๋๋ค. ์ค๋ผํด ์๋ฒ์์ FULL SCAN๋ณด๋ค INDEX SCAN์ด ์ ๋ฆฌํ๋ค๊ณ ํ๋จ ๋์์ ๋ ์์ฑ๋ INDEX์ ROOT ๋ถํฐ ์ฐพ์ต๋๋ค. ROOT์๋ BRANCH ๋ธ๋ญ์ ์์์ ์ ๋ํ ์ ๋ณด๋ฅผ ๊ฐ๊ณ ์์ด ์ฐพ๊ณ ์ ํ๋ ๋ฐ์ดํฐ์ ์์น๊ฐ ์ด๋ BRANCH์ ์์นํ๋์ง ์ ์ ์์ต๋๋ค. BRANCH LEVEL์์๋ ๋ง์ฐฌ๊ฐ์ง๋ก LEAF ๋ธ๋ญ์ ๋ํ ์์์ ์ ๋ณด๋ฅผ ๊ฐ๊ณ ์์ด ์ด๋ LEAF์ ํฌํจ๋์ด ์๋์ง ์์ ์์ต๋๋ค. ๋ง์ง๋ง์ผ๋ก LEAF์์ ํด๋น ๋ฐ์ดํฐ์ ROWID๋ฅผ ์ ์ ์์ต๋๋ค. ์ฐพ์์๋ BLOCK์ ROWID๋ฅผ ์์๋์ผ๋, ๋ฐ๋ก ํด๋น ๋ฐ์ดํฐ๋ก ์ฐพ์๊ฐ ์ ์์ด ๋น ๋ฅธ ๊ฒ์์ด ๊ฐ๋ฅํฉ๋๋ค.
INDEX๋ฅผ ์ฌ์ฉํ๋ฉด ๋ฌด์กฐ๊ฑด ๋น ๋ฅธ๊ฐ?
๊ผญ ๊ทธ๋ฐ๊ฒ ๋ง์ ์๋๋๋ค. ์ํฉ๊ณผ ์ด๋ค ์ปฌ๋ผ์ INDEX๋ฅผ ์ฌ์ฉํ๋์ง์ ๋ฐ๋ผ ์ด์ฉ๋๋ FULL SCAN์ด ์ ๋ฆฌํ ์ ์์ต๋๋ค. ์ง๊ด์ ์ธ ์์๋ฅผ ๋ค์๋ฉด 1๊ฐ์ ๋ฐ์ดํฐ๊ฐ ์๋ ํ ์ด๋ธ๊ณผ 100๋ง๊ฐ์ ๋ฐ์ดํฐ๊ฐ ๋ค์ด ์๋ ํ ์ด๋ธ์ ๋๋ค. 100๋ง๊ฐ์ ๋ฐ์ดํฐ๊ฐ ๋ค์ด์๋ ํ ์ด๋ธ์ด๋ผ๋ฉด FULL SCAN๋ณด๋ค๋ INDEX SCAN์ด ์ ๋ฆฌํ๊ฒ ์ง๋ง, 1๊ฐ์ ๋ฐ์ดํฐ๊ฐ ๋ค์ด์๋ ํ ์ด๋ธ์ ๊ตณ์ด INDEX SCAN ์์ด FULL SCAN์ด ๋น ๋ฅผ ๊ฒ ์ ๋๋ค.
๊ทธ์ธ์ ์ฝ๋ ๋ธ๋ก์ ๊ฐฏ์๋ฟ๋ง ์๋๋ผ, IOํ๋ ํ์๋ ์ค์ํฉ๋๋ค. INDEX SCAN ํ ๋ธ๋ญ์ฉ ์ฝ์ด์ผ ํฉ๋๋ค. ์ฆ, IO์ ๋จ์๊ฐ 1๋ธ๋ญ์ด ๋ฉ๋๋ค. FULL SCAN์ ๊ฒฝ์ฐ ๋ชจ๋ ๋ค ์ฝ์ด์ผํ์ง๋ง DB_FILE_MULTIBLOCK_READ_COUNT ํ๋ผ๋ฏธํฐ์ ์ค์ ์ ๋ฐ๋ผ ํ๋ฒ์ ์ฌ๋ฌ ๋ธ๋ญ์ ์ฝ์ด INDEX SCAN๋ณด๋ค ํจ์จ์ ์ผ ์ ์์ต๋๋ค.
์ค๋ผํด ์๋ฒ์์๋ FULL SCAN์ ํ ์ง INDEX SCAN์ ํ ์ง ์ฌ๋ฌ ๋ณ์๋ก ๋น๊ตํ์ฌ ์ฑ๋ฅ์ด ๋ ์ข๋ค๊ณ ํ๋จ๋๋ ๋ฐฉ๋ฒ์ผ๋ก SCAN ์์ ์ ํฉ๋๋ค. ๊ทธ๋ผ ์ด์ฐจํผ ์ค๋ผํด ์๋ฒ๊ฐ ํ๋จํด์ฃผ๋๊น ๋ชจ๋ ์ปฌ๋ผ์ INDEX๋ฅผ ๋ง๋ค์ด์ฃผ๋๊ฒ ์ ๋ฆฌํ๊ฑฐ ์๋๊ฐ์?
๋ชจ๋ ์ปฌ๋ผ์ INDEX๋ฅผ ์ถ๊ฐํด์ค์ ๋น ๋ฅธ ๊ฒ์์ด ๊ฐ๋ฅํ๋ฉด ์ข๊ฒ ์ง๋ง... INDEX๋ฅผ ๋ง๋ค์ด์ฃผ๋๋ฐ๋ ์ ์ฅ๊ณต๊ฐ์ด ํ์ํฉ๋๋ค. ๊ทธ๋ฌ๋ฏ๋ก ์๋ ํฅ์์ ๋นํด ๋จ์ ๋ค์ COST๋ฅผ ๋น๊ตํด์ ์ฌ์ฉํ ์ง ๋ง์ง๋ฅผ ์ ํด์ผํฉ๋๋ค.
INDEX๋ SELECT ๊ตฌ๋ฌธ์์๋ ํ์คํ ์ข๊ณ ๋น ๋ฆ ๋๋ค. ํ์ง๋ง INSERT, UPDATE, DELETE ์์ ์ ํ ๋๋ INDEX์ ๋ํ ์์ ๋ ํ์ํฉ๋๋ค. INDEX๊ฐ ์๋๋ผ๋ฉด ๊ทธ๋ฅ ์์ ์ ํ๋ฉด ๋์ง๋ง, INDEX๊ฐ ์๋ ๊ฒฝ์ฐ, ์ค๋ฆ์ฐจ์๋์ด ์๋ INDEX์ ์๋ก ๋ณ๊ฒฝ๋ ๋ฐ์ดํฐ๋ฅผ ๋ง์ถฐ ๋ค์ ์์ ์ ํฉ๋๋ค.
INDEX๋ ์ด๋ฐ ์ ํ๋๋ ์ฑ๋ฅ ๋ณด๋ค SELECT๋ก ๋ฐ์ดํฐ๋ฅผ ๊ฒ์ํ์ ๋ ๊ฒ์ ์๋๋ฅผ ํฅ์์์ผ์ฃผ๋ ํผํฌ๋จผ์ค๊ฐ ๋ ๋๊ฒ ํ๊ฐ๋์ด ์ฌ์ฉํฉ๋๋ค.
INDEX๋ ์ธ์ ์ฌ์ฉ ํ ๊น์?
1. ๊ตฌ๋ณ๋๋ ๊ฐ์ด ๋ง์ ์นผ๋ผ
PRIMARY KEY๋ก ์ง์ ๋๋ ์นผ๋ผ์๋ UNIQUEํ INDEX๊ฐ ์์ฑ๋ฉ๋๋ค. ๊ฒ์ํ๋ ค๋ ๋ชจ๋ ๋ฐ์ดํฐ๊ฐ ๊ณ ์ ํ ๊ฐ์ด๋ผ๋ฉด, INDEX ๊ตฌ์กฐ ๋ด์์๋ ์ค๋ณต๋๋ ๋ฐ์ดํฐ ํ์ธ ํ์์์ด ๊ฐ์ฅ ์ต์ ํ ๋์ด ์๋ ์ํ์ ๋๋ค.
2. WHERE์ ์์ ์์ฃผ ์กฐํ๋๋ ์นผ๋ผ
WHERE์ ์์ ์ฌ์ฉ์ด ์๋๋ค๋ฉด ๊ตณ์ด INDEX๋ฅผ ๋ง๋ค์ด์ค ํ์๊ฐ ์๋ค. STORAGE๋ง ์ฐจ์งํ๊ณ ์ฌ์ฉ๋ ์ํ๋ค๋ฉด ์์ ์ฃผ๋๊ฒ ๋์์ ๋๋ค. ์ค๋ณต๋๋ ๋ฐ์ดํฐ๊ฐ ์๋ค๊ณ ํ๋๋ผ๋ ์์ฃผ WHERE์ ์ ์กฐ๊ฑด์ผ๋ก ์ฌ์ฉ๋๋ ์นผ๋ผ์ด๋ผ๋ฉด INDEX SCAN์ด ํจ์จ์ ์ผ ๊ฒ์ ๋๋ค.
3. ํฐ ํ ์ด๋ธ์์ ์ ์ ๋ฐ์ดํฐ๊ฐ ํ์ํ ๋
3๋ฒ์งธ๋ ํ์ฌ์ ์ฌ์ง์ํ๋ฅผ๋๊ณ ์์๋ฅผ ๋ค์ด๋ณด๊ฒ ์ต๋๋ค. ํ ์ด๋ธ์๋ ์ฌ์ง ์ํ์ ๋ํ ์นผ๋ผ์ด ์์ต๋๋ค. ๊ทธ๋ฐ๋ฐ ์ฌ์ง์ด 90% ์ด์์ ์ฐจ์งํ๊ณ , ๋๋จธ์ง ์ํ๊ฐ ์ผ๋ง ์๋๋ ๋น์ค์ ์ฐจ์งํ์๋ INDEX์๋ NULL๊ฐ์ด ๋ค์ด๊ฐ ์ ์๋ค๋ ํน์ง์ ์ฌ์ฉํ ์ ์์ต๋๋ค. INDEX์๋ NULL๊ฐ์ด ๋ค์ด๊ฐ ์ ์์ต๋๋ค. ์ฌ์ง์ํ์ INDEX ์นผ๋ผ์ ์ฌ์ฉํ๊ธฐ ์ํด ๊ฐ์ฅ ๋น์จ์ ๋ง์ด ์ฐจ์งํ๊ณ ์๋ "์ฌ์ง"์ NULL๋ก INSERTํ๊ณ ๋๋จธ์ง ์ํ๋ ๋ฐ๋ก ๊ตฌ๋ถํฉ๋๋ค.
์ด๋ ๊ฒ ๋ฐ์ดํฐ๋ฅผ ์ ๋ ฅํด์ฃผ๋ฉด, FULL SCAN์ผ๋ก ๊ฒ์ ํ๋๋ผ๋ฉด 100๊ฑด์ ๋ชจ๋ ํ์ ํ์ด์ผํ๋๋ฐ INDEX๋ฅผ ํ์ฉํด์ 5๊ฑด์ ๋ฐ์ดํฐ์ ๋ํ INDEX SCAN์ ์งํํ๊ฒ ๋ฉ๋๋ค.
INDEX ์ ์ง๋ณด์
์ง๊ธ๊น์ง์ ๋ด์ฉ์ผ๋ก ๋ดค์ ๋, INDEX๋ ๋จ์ ๋ณด๋ค๋ ์ฅ์ ์ด ๋ง์ ๊ฒ ๊ฐ๊ณ , ๋ฐ์ดํฐ๋ฒ ์ด์ค๋ฅผ ์ฌ์ฉํ๋ค๋ฉด ๋ฌด์กฐ๊ฑด ์ฌ์ฉํ ์ ๋ฐ์ ์๋ ๊ฒ ๊ฐ์ต๋๋ค. ์ข์ ๋๊ตฌ์ธ ๋งํผ, ์ ์ง๋ณด์๋ ํ์ํฉ๋๋ค.
์ํ๊ตฌ๋งค, ์ฃผ์๊ฑฐ๋, ๊ทผํดํ์ธ ๋ฑ INSERT ์์ ์ด ์ง์์ ์ผ๋ก ์ด๋ฃจ์ด์ง๋ ํ ์ด๋ธ์ INDEX์ ํฌ๊ธฐ๋ ๊ณ์ ์ปค์ง๊ฒ ๋์ด ์์ต๋๋ค. ๋ INDEX์ ํน์ฑ์ ๋ฐ์ดํฐ๊ฐ INSERT ๋ ๋ ํ ์ด๋ธ๊ณผ ๋ฌ๋ฆฌ ์๋ฆฌ๊ฐ ์ ํด์ ธ ์์ต๋๋ค. ๋ง์ฝ ๋ค์ด๊ฐ BLOCK์ ์ด๋ฏธ ๋ค๋ฅธ ๋ฐ์ดํฐ๊ฐ ๋ค์ด๊ฐ ์๊ณ ๊ฝ์ฐจ ์๋๊ฒฝ์ฐ, ๋ฐ์ดํฐ๋ฅผ ์๋ผ์ ์๋ก์ด LEAF ๋ธ๋ก์ ์ ๋ฐ์ ๋ฃ์ต๋๋ค. ์ฌ๊ธฐ์ ํ๊ฑด์ด ์๋ ์ ๋ฐ์ ๋ฐ์ดํฐ๋ฅผ ๋ถํ ํ๋ ์ด์ ๋ ์์ผ๋ก ๋ ๋ค์ด์ฌ ๋ฐ์ดํฐ์ ์๋ฆฌ๋ฅผ ๋ฏธ๋ฆฌ ๋ง๋ จํด์ฃผ๊ธฐ ์ํด์ ์ ๋๋ค.
์ด๋ฐ ์์ ์ด ๊ณ์ ์งํ๋๋ค๋ณด๋ฉด LEAF BLOCK์ ์๋ ์๋ ์์ด ๋ง์์ง๊ณ ๊ณ์ ๋ถํ ํ๊ฒ ๋๋ฉด ๋ฉ๋ชจ๋ฆฌ์ ์ฌ๋ ธ๋๋ฐ ์๋ฌด ๋ฐ์ดํฐ๋ ์๋ LEAF BLOCK์ด ์๊ฒจ๋ ์๋ ์์ต๋๋ค. ๊ทธ๋งํผ ๋ฉ๋ชจ๋ฆฌ์ ์ข์ง ์์ต๋๋ค. ์ด๋ฐ ๋ฌธ์ ๋ฅผ ํด๊ฒฐํ๊ธฐ ์ํด DBA๊ฐ ์ธ๋ฑ์ค๋ฅผ ์ฌ๊ตฌ์ฑํด์ฃผ๋ ํ๋์์ ์ ํฉ๋๋ค.
๋๊ธ