SQL ์ต์ ํ์ ์๋ฆฌ
SQLD์์๋ 2~3๋ฌธ์ ์ถ์ ๋๋ ๋น๊ต์ ๋น์ค์ด ๋ฎ์ ๋ฌธ์ (SQLP์์ ๋ ์ค์ํ๊ฒ ๋ณธ๋ค)
1. ์ตํฐ๋ง์ด์
- SQL ๊ฐ๋ฐ์๊ฐ SQL์ ์์ฑํ์ฌ ์คํํ ๋, ์ตํฐ๋ง์ด์ ๋ SQL์ ์ด๋ป๊ฒ ์คํํ ๊ฒ์ธ์ง ๊ณํํ๊ฒ ๋๋ค. ~ SQL ์คํ ๊ณํ์ ์๋ฆฝํ๊ณ SQL์ ์คํํ๋ค
- ์ตํฐ๋ง์ด์ ๋ SQL์ ์คํ ๊ณํ์ ์๋ฆฝํ๊ณ SQL์ ์คํํ๋ ๋ฐ์ดํฐ๋ฒ ์ด์ค ๊ด๋ฆฌ์์คํ ์ ์ํํธ์จ์ด์ด๋ค
- ๋์ผํ ๊ฒฐ๊ณผ๊ฐ ๋์ค๋ SQL๋ ์ด๋ป๊ฒ ์ํํ๋๋์ ๋ฐ๋ผ ์ฑ๋ฅ์ด ๋ฌ๋ผ์ง๋ค. ๋ฐ๋ผ์ ์ตํฐ๋ง์ด์ ์ ์คํ ๊ณํ์ SQL ์ฑ๋ฅ์ ์์ฃผ ์ค์ํ ์ญํ ์ ํ๋ค.
1) ํน์ง
- ์ตํฐ๋ง์ด์ ๋ ๋ฐ์ดํฐ ๋์ ๋๋ฆฌ์ ์๋ ์ค๋ธ์ ํธ ํต๊ณ, ์์คํ ํต๊ณ ๋ฑ์ ์ ๋ณด๋ฅผ ์ฌ์ฉํด ์์๋๋ ๋น์ฉ์ ์ฐ์
- ์ตํฐ๋ง์ด์ ๋ ์ฌ๋ฌ ๊ฐ์ ์คํ ๊ณํ ์ค ์ต์ ๋น์ฉ์ ๊ฐ์ง๊ณ ์๋ ๊ณํ์ ์ ํํด SQL์ ์คํ
SQL ์คํ๊ตฌ์กฐ
~ AND ์ฐ์ฐ์ผ๋ ์์ ํ ์ด๋ธ์ ๋จผ์ ์ฝ๊ฒ ํ๋ ๊ฒ์ด ๋ ๋์ ์กฐํ ์๋๋ฅผ ๋ผ ์ ์๋ค
2) ์ตํฐ๋ง์ด์ ์ ์คํ๊ณํ ํ์ธ
- ์ตํฐ๋ง์ด์ ๋ SQL ์คํ ๊ณํ์ PLAN_TABLE์ ์ ์ฅํ๋ค
SQL Developer ํ๋ก๊ทธ๋จ์์๋ F10์ผ๋ก ์คํ๊ณํ ํ์ธ๊ฐ๋ฅ
2. ์ตํฐ๋ง์ด์ ์ข ๋ฅ
1) ์คํ ๋ฐฉ๋ฒ
- SQL์ ์คํํ๋ฉด ํ์ฑ์ ์คํํด์ SQL์ ๋ฌธ๋ฒ ๊ฒ์ฌ ๋ฐ ๊ตฌ๋ฌธ๋ถ์์ ์ํ
- ๊ตฌ๋ฌธ ๋ถ์์ด ์๋ฃ๋๋ฉด ์ตํฐ๋ง์ด์ ๊ฐ ๊ท์น ๊ธฐ๋ฐ ๋๋ ๋น์ฉ ๊ธฐ๋ฐ์ผ๋ก ์คํ ๊ณํ ์๋ฆฝ
- ์ตํฐ๋ง์ด์ ๋ ๊ธฐ๋ณธ์ ์ผ๋ก ๋น์ฉ ๊ธฐ๋ฐ ์ตํฐ๋ง์ด์ ๋ฅผ ์ฌ์ฉํด ์คํ ๊ณํ ์๋ฆฝ. ๋น์ฉ ๊ธฐ๋ฐ ์ตํฐ๋ง์ด์ ๋ ํต๊ณ ์ ๋ณด๋ฅผ ํ์ฉํด ์ต์ ์ ์คํ ๊ณํ์ ์๋ฆฝ
- ์คํ ๊ณํ ์๋ฆฝ์ด ์๋ฃ๋๋ฉด ์ต์ข ์ ์ผ๋ก SQL์ ์คํํ๊ณ ์คํ์ด ์๋ฃ๋๋ฉด ๋ฐ์ดํฐ๋ฅผ ์ธ์ถํ๋ค
cf) ์ตํฐ๋ง์ด์ ์์ง
์ฟผ๋ฆฌ ํธ๋์คํฌ๋จธ : SQL๋ฌธ์ ํจ์จ์ ์ผ๋ก ์คํํ๊ธฐ ์ํด ์ตํฐ๋ง์ด์ ๊ฐ ๋ณํํ๋ค. SQL์ด ๋ณํ๋์ด๋ ๊ฒฐ๊ณผ ๋์ผ
Estimator : ํต๊ณ์ ๋ณด๋ฅผ ์ฌ์ฉํด SQL ์คํ ๋น์ฉ์ ๊ณ์ฐํ๋ค. ์ด ๋น์ฉ์ ์ต์ ์ ์คํ ๊ณํ์ ์๋ฆฝํ๊ธฐ ์ํด ํ์ํ๋ค
Pan Ganerator : SQL ์คํ ๊ณํ์ ์๋ฆฝํ๋ค
- ๊ท์น ๊ธฐ๋ฐ ์ตํฐ๋ง์ด์ vs ๋น์ฉ ๊ธฐ๋ฐ ์ตํฐ๋ง์ด์
- ์ต์ ์ค๋ผํด ๋ฒ์ ์ ๊ท์น ๊ธฐ๋ฐ ์ตํฐ๋ง์ด์ ๋ณด๋ค ๋น์ฉ ๊ธฐ๋ฐ ์ตํฐ๋ง์ด์ ๋ฅผ ๊ธฐ๋ณธ์ ์ผ๋ก ์ฌ์ฉํ๋ค
cf) ์ฐ์ ์์ 1 : ROWID๋ฅผ ์ฌ์ฉํ 1๊ฐ ํ/ ์ฐ์ ์์ 15 : ์ ์ฒด ํ ์ด๋ธ Full Scan
๋น์ฉ ๊ธฐ๋ฐ ์ตํฐ๋ง์ด์
- ๋น์ฉ ๊ธฐ๋ฐ ์ตํฐ๋ง์ด์ ๋ ์ค๋ธ์ ํธ ํต๊ณ ๋ฐ ์์คํ ํต๊ณ๋ฅผ ์ฌ์ฉํด ์ด ๋น์ฉ์ ๊ณ์ฐ
- ์ด ๋น์ฉ์ SQL์ ์ํํ๊ธฐ ์ํด ์์๋๋ ์์์๊ฐ ๋๋ ์์์ ์ฌ์ฉ๋์ ์๋ฏธ
- ์ด ๋น์ฉ์ด ์ ์ ์ชฝ์ผ๋ก ์คํ ๊ณํ์ ์๋ฆฝ
- ๋น์ฉ ๊ธฐ๋ฐ ์ตํฐ๋ง์ด์ ์์ ํต๊ณ ์ ๋ณด๊ฐ ๋ถ์ ์ ํ ๊ฒฝ์ฐ ์ฑ๋ฅ ์ ํ๊ฐ ๋ฐ์ํ ์ ์๋ค
3. ์ธ๋ฑ์ค
- ์ธ๋ฑ์ค๋ ๋ฐ์ดํฐ๋ฅผ ๋น ๋ฅด๊ฒ ๊ฒ์ํ ์ ์๋ ๋ฐฉ๋ฒ์ ์ ๊ณตํ๋ค
- ์ธ๋ฑ์ค๋ ์ธ๋ฑ์ค ํค๋ก ์ ๋ ฌ๋๊ธฐ ๋๋ฌธ์ ์ํ๋ ๋ฐ์ดํฐ๋ฅผ ๋น ๋ฅด๊ฒ ์กฐํํ ์ ์๋ค
- ์ธ๋ฑ์ค๋ ์ค๋ฆ์ฐจ์ ๋ฐ ๋ด๋ฆผ์ฐจ์ ํ์์ด ๊ฐ๋ฅํ๋ค
- ํ๋์ ํ ์ด๋ธ์ ์ฌ๋ฌ ์ธ๋ฑ์ค๋ฅผ ์์ฑํ ์ ์๊ณ ํ๋์ ์ธ๋ฑ์ค๋ ์ฌ๋ฌ ์นผ๋ผ์ผ๋ก ๊ตฌ์ฑ๋๋ค
- ํ ์ด๋ธ์ ์์ฑํ ๋ ๊ธฐ๋ณธ ํค๋ ์๋์ผ๋ก ์ธ๋ฑ์ค๊ฐ ๋ง๋ค์ด์ง๊ณ ์ธ๋ฑ์ค์ ์ด๋ฆ์ SYSXXXX์ด๋ค
- ์ธ๋ฑ์ค์ ๊ตฌ์กฐ๋ Root Block, Branch Block, Leaf Block์ผ๋ก ๊ตฌ์ฑ๋๊ณ Root Block์ ์ธ๋ฑ์ค ํธ๋ฆฌ์์ ๊ฐ์ฅ ์์ ๋ ธ๋์ด๋ฉฐ Branch Block์ ๋ค์ ๋จ๊ณ์ ์ฃผ์๋ฅผ ๊ฐ๊ณ ์๋ ํฌ์ธํฐ๋ก ๊ตฌ์ฑ๋๋ค
- Leaf Block์ ์ธ๋ฑ์ค ํค์ ROWID๋ก ๊ตฌ์ฑ๋๊ณ ์ธ๋ฑ์ค ํค๋ ์ ๋ ฌ๋์ด ์ ์ฅ๋์ด ์๋ค
- Leaf Block์ Double Linked LIst๋ก ๊ตฌ์ฑ๋์ด ์๋ฐฉํฅ ํ์์ด ๊ฐ๋ฅํ๋ค
- Leaf Block์์ ์ธ๋ฑ์ค ํค๋ฅผ ์ฝ์ผ๋ฉด ROWID๋ฅผ ์ฌ์ฉํด EMP ํ ์ด๋ธ์ ํ์ ์ง์ ์ฝ์ ์ ์๋ค
1) ์ธ๋ฑ์ค ์ค์บ
(1) ์ธ๋ฑ์ค ์ ์ผ ์ค์บ
- INDEX UNIQUE SCAN์ ์ธ๋ฑ์ค์ ํค ๊ฐ์ด ์ค๋ณต๋์ง ์๋ ๊ฒฝ์ฐ, ํด๋น ์ธ๋ฑ์ค๋ฅผ ์ฌ์ฉํ ๋ ๋ฐ์๋๋ค
(2) ์ธ๋ฑ์ค ๋ฒ์ ์ค์บ
- SELECT๋ฌธ์์ ํน์ ๋ฒ์๋ฅผ ์กฐํํ๋ WHERE๋ฌธ์ ์ฌ์ฉํ ๊ฒฝ์ฐ ๋ฐ์
- ๋ฐ์ดํฐ ์์ด ์์ ๊ฒฝ์ฐ TABLE FULL SCAN๊ฐ ๋ฐ์ํ ์ ์๋ค
- INDEX RANGE SCAN์ ์ธ๋ฑ์ค์ LEAF BLOCK์ ํน์ ๋ฒ์๋ฅผ ์ค์บํ ๊ฒ์ด๋ค(๊ด๊ณ ์ฐ์ฐ์ ์ฌ์ฉ)
(3) ์ธ๋ฑ์ค ์ ์ฒด ์ค์บ
- ์ธ๋ฑ์ค FULL SCAN์ ์ธ๋ฑ์ค์์ ๊ฒ์๋๋ ์ธ๋ฑ์ค ํค๊ฐ ๋ง์ ๊ฒฝ์ฐ LEAF BLOCK์ ์ฒ์๋ถํฐ ๋๊น์ง ์ ์ฒด๋ฅผ ์ฝ์ด ๋ค์ธ๋ค
INDEX RANGE SCAN์ ์ธ๋ฑ์ค์ LEAF BLOCK์ ์ ์ฒด ๋ฒ์๋ฅผ ์ค์บํ ๊ฒ์ด๋ค
4. ์คํ๊ณํ : ์ตํฐ๋ง์ด์ ์ ์ํด ์คํ๊ณํ์ด ์ ํด์ง๊ณ ๋ชจ๋ ๋๊ฐ์ด ์ค์บํ๋ ๊ฒ์ด ์๋๋ค
5. ์ตํฐ๋ง์ด์ ์กฐ์ธ
1) Nested Loop ์กฐ์ธ
- ํ๋์ ํ ์ด๋ธ์์ ๋ฐ์ดํฐ๋ฅผ ๋จผ์ ์ฐพ๊ณ ๊ทธ ๋ค์ ํ ์ด๋ธ์ ์กฐ์ธํ๋ ๋ฐฉ์
- ๋จผ์ ์กฐํ๋๋ ํ ์ด๋ธ์ ์ธ๋ถ ํ ์ด๋ธ์ด๋ผ๊ณ ํ๊ณ ๊ทธ ์ธ์๋ ๋ด๋ถ ํ ์ด๋ธ์ด๋ผ๊ณ ํ๋ค
- ํฌ๊ธฐ๊ฐ ์์ ์ธ๋ถ ํ ์ด๋ธ์ ์ฐพ๋ ๊ฒ์ด ์ค์ ~ ๋ฐ์ดํฐ ์ค์บ ๋ฒ์๋ฅผ ์ค์ผ ์ ์๋ค
- Nested Loop ์กฐ์ธ์ Random Access๊ฐ ๋ฐ์ํ๊ฒ ๋๋ฏ๋ก ๋ฐ์ํ๋ ์์ ์ค์ด๋ ๊ฒ์ด ๊ด๊ฑด์ด๋ค
2) Sort Merge ์กฐ์ธ
- ํ๋์ ๋ฉ๋ชจ๋ฆฌ ๊ณต๊ฐ์ ๋ฐ์ดํฐ๋ฅผ ๋ชจ๋ ๋ถ๋ฌ์จ ๋ค์ ์ ๋ ฌ ์ํ ํ ํ ์ด๋ธ์ ๋ณํฉ, ๋ฐ์ดํฐ ์์ด ๋ง์ผ๋ฉด ์ ๋ ฌ๋ก ์ธํ ์ฑ๋ฅ ์ ํ ๋ฐ์
- ์ ๋ ฌ ๋ฐ์ดํฐ์ ์์ด ๋ง์ผ๋ฉด ์ ๋ ฌ์ ์์ ์์ญ์์ ์ํ๋๋ค. ์์ ์์ญ์ ๋์คํฌ์ ์๊ธฐ ๋๋ฌธ์ ์ฑ๋ฅ์ด ๊ธ๊ฒฉํ๊ฒ ๋จ์ด์ง๋ค
3) Hash ์กฐ์ธ
- ๋ ๊ฐ์ ํ ์ด๋ธ ์ค ์์ ํ ์ด๋ธ์ Hash ๋ฉ๋ชจ๋ฆฌ์ ๋ก๋ฉํ๊ณ ์กฐ์ธ ํค๋ฅผ ์ฌ์ฉํด ๋ ํ ์ด๋ธ์ ์กฐ์ธํ ํด์ ํ ์ด๋ธ์ ์์ฑํ๋ค
- Hash ์กฐ์ธ์ ํด์ ํจ์๋ฅผ ์ฌ์ฉํด ์ฃผ์๋ฅผ ๊ณ์ฐํ๊ณ ํด๋น ์ฃผ์๋ฅผ ์ฌ์ฉํด ํ ์ด๋ธ์ ์กฐ์ธํ๊ธฐ ๋๋ฌธ์ CPU ์ฐ์ฐ์ ๋ง์ด ํ๋ค
- ํนํ ํด์ ์กฐ์ธ ์ ์ ํ ํ ์ด๋ธ์ด ๋ฉ๋ชจ๋ฆฌ์ ์ถฉ๋ถํ ๋ก๋ฉ๋ ์ ์์ด์ผ ํ๋ค
'RDB๐๏ธ > ์ธํ๋ฐ : SQLD ์๊ฒฉ์ฆ ๋ฐ๊ธฐ' ์นดํ ๊ณ ๋ฆฌ์ ๋ค๋ฅธ ๊ธ
SQL ๊ฐ๋ฐ์ (SQLD) ์๊ฒฉ์ฆ ๋ฐ๊ธฐ Part.3 ์น์ 0. (0) | 2023.08.20 |
---|---|
SQL ๊ฐ๋ฐ์ (SQLD) ์๊ฒฉ์ฆ ๋ฐ๊ธฐ Part.2 ์น์ 2. (0) | 2023.08.03 |
SQL ๊ฐ๋ฐ์ (SQLD) ์๊ฒฉ์ฆ ๋ฐ๊ธฐ Part.2 ์น์ 1. (0) | 2023.07.24 |
SQL ๊ฐ๋ฐ์ (SQLD) ์๊ฒฉ์ฆ ๋ฐ๊ธฐ Part.2 ์น์ 0. (0) | 2023.07.12 |
SQL ๊ฐ๋ฐ์ (SQLD) ์๊ฒฉ์ฆ ๋ฐ๊ธฐ Part 1 ์น์ 2. (0) | 2023.06.29 |