๋ฐ์ดํฐ๋ฒ ์ด์ค ์์คํ
ํ์ผ์ฒ๋ฆฌ์์คํ ์ ๋ฌธ์ ์ ์ ํด๊ฒฐํ๊ธฐ ์ํด ๋ฑ์ฅ
๋ค์ํ ํํ์ ๋ฐ์ดํฐ๋ฅผ ๋ชจ์๋์ ๋ฐ์ดํฐ์ ์งํฉ์ฒด
๋ฐ์ดํฐ ๋ฒ ์ด์ค ๊ด๋ฆฌ ์์คํ
๋ฐ์ดํฐ ๋ฒ ์ด์ค์ ๋ฑ์ฅ ๋ฐฐ๊ฒฝ
์ด์ ์๋ ๊ตฌ์กฐํ๋์ง ์์ ํ์ผ์ฒ๋ฆฌ ์์คํ ์ด์๋ค.
ํ์ง๋ง ํ์ผ์ฒ๋ฆฌ์๋ ๋ค์ํ ๋ฌธ์ ์ ๋ค์ด ์์ด ๋ฐ์ดํฐ๋ฒ ์ด์ค ์์คํ ์ด ๋ฑ์ฅํ๊ฒ ๋๋ค.
*ํ์ผ ์ฒ๋ฆฌ ์์คํ ์ ๋ฌธ์ ์
1) ์ค๋ณต : ํ์ผ์ฒ๋ฆฌ์์คํ ์ ๊ฐ ํ์ผ๋ง๋ค ํ์ํ ๋ฐ์ดํฐ๋ฅผ ๊ฐ๊ฐ ๊ฐ์ง๊ณ ์์ด์ผ ํ๋ฏ๋ก ์ ์ฒด์ ์ธ ์๊ฐ๊ณผ ๋ ธ๋ ฅ, ๊ฒฝ์ ๋น์ฉ์ ์์ด์ ํจ์จ์ด ์๋ค.
2) ๋น์ผ๊ด์ฑ : ๋ฐ์ดํฐ์ ๋ณ๊ฒฝ์ฌํญ์ด ์กฐ๊ธ๋ง ์์ด๋ ๊ฐ ํ์ผ์์ ํด๋น๋๋ ๋ฐ์ดํฐ๋ฅผ ๋ชจ๋ ๋ณ๊ฒฝํด์ผ ํ๋ฏ๋ก ์์ ์ ๋ฌธ์ ๊ฐ ์๊ณ , ํ๊บผ๋ฒ์ ์์ ์ด ๋์ง ์์ผ๋ฉด ๋ฐ์ดํฐ๊ฐ์ด ์๋ก ํ๋ฆฌ๊ฒ ๋๋ ๋ฌธ์ ์ ์ด ์๋ค.
3) ์์ฉ ํ๋ก๊ทธ๋จ ๊ฐ๋ฐ ๋ฌธ์ : ๊ธฐ์กด์ ํ์ผ ์์คํ ์ ํ์ผ ์ฉ๋์๋ง ๋ง์ถฐ์ ์ ์๋๊ธฐ ๋๋ฌธ์ ๋ค๋ฅธ ํ๋ก๊ทธ๋จ์ ๋ง๋ค๋๋ ๋ค์ ๋ฐ์ดํฐ๋ฒ ์ด์ค ์์ ์ ํด์ผ ํ๋ค๋ ๋ฌธ์ ๊ฐ ์๋ค
4) ๋ฐ์ดํฐ ์ถ๊ฐ ๋ฐ ๊ฒ์์ ๋ฌธ์ : ๋ฐ์ดํฐ๊ฐ ์ฌ๋ฌ ํ์ผ์ ์ฐ์ฌํ๊ณ ๋ ๊ทธ ํ์ผ๋ง๋ค ๋ฐ์ดํฐ๋ฒ ์ด์ค ์์์ด ๋ค๋ฅด๊ธฐ ๋๋ฌธ์ ์ผ๋ฅ ์ ์ธ ๊ฒ์์ด๋ ๋จ์ ์ถ๊ฐ ์์ ์ด ์ด๋ ต๋ค.
๋ฐ์ดํฐ๋ฒ ์ด์ค์ ํน์ง
1. ๋ฐ์ดํฐ์ ๋ ๋ฆฝ์ฑ
- ๋ฌผ๋ฆฌ์ ๋ ๋ฆฝ์ฑ : ๋ฐ์ดํฐ๋ฒ ์ด์ค ํฌ๊ธฐ๋ฅผ ๋๋ฆฌ๊ฑฐ๋ ์ฑ๋ฅ ํฅ์์ ์ํด ๋ฐ์ดํฐ ํ์ผ์ ๋๋ฆฌ๊ฑฐ๋ ์๋กญ๊ฒ ์ถ๊ฐํด๋ ๊ด๋ จ ์ ํ๋ฆฌ์ผ์ด์ ์ ์์ ํ ํ์๊ฐ ์๋ค.
- ๋ ผ๋ฆฌ์ ๋ ๋ฆฝ์ฑ : ๋ฐ์ดํฐ๋ฒ ์ด์ค๋ ๋ ผ๋ฆฌ์ ์ธ ๊ตฌ์กฐ๋ก ๋ค์ํ ์ ํ๋ฆฌ์ผ์ด์ ์ ๋ ผ๋ฆฌ์ ์๊ตฌ๋ฅผ ๋ง์กฑ์์ผ์ค๋ค.
2. ๋ฐ์ดํฐ์ ๋ฌด๊ฒฐ์ฑ
- ๋ฐ์ดํฐ๋ ์ฌ๋ฌ ๊ฒฝ๋ก๋ฅผ ํตํด์ ๋ค์ด์ค๋๋ฐ, ๋ฐ์ดํฐ์์ ๋ฐ์ํ๋ ๊ฒฝ์ฐ์ ์๋ฅผ ๋ฐฉ์งํ๋ ๊ธฐ๋ฅ์ผ๋ก ๋ฐ์ดํฐ์ ์ ํจ์ฑ์ ๊ฒ์ฌํด์ ๋ฌด๊ฒฐ์ฑ์ ๊ตฌํํ๋ค.
3. ๋ฐ์ดํฐ์ ๋ณด์์ฑ
- ์ธ๊ฐ๋ ์ฌ์ฉ์๋ค๋ง ๋ฐ์ดํฐ๋ฒ ์ด์ค๋ ๋ฐ์ดํฐ๋ฒ ์ด์ค ๋ด์ ์์์ ์ ๊ทผํ ์ ์๋๋ก ๊ณ์ ๊ด๋ฆฌ ๋๋ ์ ๊ทผ ๊ถํ์ ์ค์
4. ๋ฐ์ดํฐ์ ์ผ๊ด์ฑ
- ์ฐ๊ด๋ ์ ๋ณด๋ฅผ ๋ ผ๋ฆฌ์ ์ธ ๊ตฌ์กฐ๋ก ๊ด๋ฆฌํด์, ์ด๋ค ํ๋์ ๋ฐ์ดํฐ๋ง ๋ณ๊ฒฝํ์ ๊ฒฝ์ฐ์ ๋ฐ์ํ ์ ์๋ ๋ถ์ผ์น์ฑ์ ๋ฐฐ์ ํ ์ ์๋ค.
- ๋ ์์ ์ค์ ์ผ๋ถ ๋ฐ์ดํฐ๋ง ๋ณ๊ฒฝ๋์ ๋๋จธ์ง ๋ฐ์ดํฐ์ ์ผ์นํ์ง ์๋ ๊ฒฝ์ฐ๋ฅผ ๋ฐฉ์งํ๋ค.
5. ๋ฐ์ดํฐ์ ์ค๋ณต ์ต์ํ
- ๋ฐ์ดํฐ๋ฒ ์ด์ค๋ ๋ฐ์ดํฐ๋ฅผ ํตํฉํด์ ๊ด๋ฆฌํจ์ผ๋ก์จ, ํ์ผ ์์คํ ์ ๋จ์ ์ค ํ๋์ธ ์๋ฃ์ ์ค๋ณต๊ณผ ๋ฐ์ดํฐ์ ์ค๋ณต์ฑ ๋ฌธ์ ๋ฅผ ์ต์ํํ ์ ์๋ค.
๋ฐ์ดํฐ๋ฒ ์ด์ค์ ์ฅ์
1. ๋ฐ์ดํฐ ๊ณต์
2. ๋ฐ์ดํฐ ์ค๋ณต์ ์ต์ํ
3. ๊ณ์์ ๋ณํ์ ๋ํ ์ ์
4. ๋ณด์์ฑ
๋ฐ์ดํฐ๋ฒ ์ด์ค์ ์ฑ๋ฅ
๋์คํฌ I/O๋ฅผ ์ด๋ป๊ฒ ์ค์ด๋์ ๋ฐ๋ผ ๋ฌ๋ ค์๋ค.
๋ฐ์ดํฐ๋ฅผ ์ฝ๋๋ฐ ๋์คํฌ ํค๋์ ์์น ์ด๋์์ด ์ผ๋ง๋ ๋ง์ ๋ฐ์ดํฐ๋ฅผ ํ๋ฒ์ด ๊ธฐ๋กํ๋๋์ ๋ฐ๋ผ ๊ฒฐ์ ๋๋ค.
๋ฐ๋ผ์ ์์ฐจ์ ์ผ๋ก I/O๋ฅผ ์ํํ๋๊ฒ ๋๋ค I/O๋ณด๋ค ๋น ๋ฅด๋ค.
์ฟผ๋ฆฌ ์ต์ ํ, ๋น ๋ฅธ ์ฟผ๋ฆฌ๋ฅผ ์ํ 7๊ฐ์ง ์ฒดํฌ๋ฆฌ์คํธ
1. SELECT ์์๋ ๊ผญ ํ์ํ ์นผ๋ผ๋ง ๋ถ๋ฌ์์ผ ํ๋ค.
- ๋๋ฌด ๋ง์ ํ๋๊ฐ์ ๋ถ๋ฌ์ฌ ์๋ก DB๋ ๋ ๋ง์ ๋ก๋๋ฅผ ๋ถ๋ดํ๊ธฐ ๋๋ฌธ์
2. ์กฐ๊ฑด ๋ถ์ฌ์, ๊ฐ๊ธ์ ๊ธฐ์กด DB๊ฐ์ ๋ณ๋์ ์ฐ์ฐ์ ๊ฑธ์ง ์๋ ๊ฒ์ด ์ข๋ค.
- ์กฐ๊ฑด ๊ฒ์์ด ํ์ํ ๋ ๊ตณ์ด ๋ชจ๋ ํ๋ ๊ฐ์ ํ์ํ ํ์ ์๊ฒ ์ฟผ๋ฆฌ๋ฅผ ์ง์ฃผ์
3. LIKE ์ฌ์ฉ์ %(์์ผ๋์นด๋๋ฌธ์์ด)๋ฅผ string ์๋ถ๋ถ์ ๋ฐฐ์นํ์ง ์๋ ๊ฒ์ด ์ข๋ค.
- ์์ 2๋ฒ๊ณผ ๋ง์ฐฌ๊ฐ์ง๋ก full table scan์ ๋ง๊ฒ ๋ค๋ฅธ ํํ์ ์กฐ๊ฑด์ ์ ์ฌ์ฉํ๋๊ฒ์ด ํจ๊ณผ์ ์ด๋ค.
4. SELECT DISTINCT, UNION DISTINCT์ ๊ฐ์ด ์ค๋ณต ๊ฐ์ ์ ๊ฑฐํ๋ ์ฐ์ฐ์ ์ต๋ํ ์ฌ์ฉํ์ง ์์์ผํ๋ค.
- ์ค๋ณต ๊ฐ์ ์ ๊ฑฐํ๋ ์ฐ์ฐ์ ์๊ฐ์ด ๋ง์ด๊ฑธ๋ฆฌ๊ธฐ ๋๋ฌธ์ด๋ค.
- ์ฐจ๋ผ๋ฆฌ EXISTS๋ฅผ ์ฌ์ฉํ์.
5. ๊ฐ์ ๋ด์ฉ์ ์กฐ๊ฑด์ด๋ผ๋ฉด, GROUP BY ์ฐ์ฐ ์์๋ ๊ฐ๊ธ์ HAVING๋ณด๋ค๋ WHERE ์ ์ ์ฌ์ฉํ๋ ๊ฒ์ด ์ข๋ค.
- WHERE ์ ์ด HAVING์ ๋ณด๋ค ๋จผ์ ์คํ๋๊ธฐ ๋๋ฌธ์ WHERE๋ก ๋ฏธ๋ฆฌ ๋ฐ์ดํฐ ํฌ๊ธฐ๋ฅผ ์ค์ฌ ๋๋๊ฒ ์ข๋ค.
6. 3๊ฐ ์ด์์ ํ ์ด๋ธ์ INNER JOIN ํ ๋๋, ํฌ๊ธฐ๊ฐ ๊ฐ์ฅ ํฐ ํ ์ด๋ธ์ FROM ์ ์ ๋ฐฐ์นํ๊ณ , INNER JOIN ์ ์๋ ๋จ์ ํ ์ด๋ธ์ ์์ ์์๋๋ก ๋ฐฐ์นํ๋ ๊ฒ์ด ์ข๋ค.
- INNER JOIN ๊ณผ์ ์์ ์ต์ํ์ Combination์ ํ์ํ๋๋ก FROM & INNER JOIN์ ์์๋ฅผ ๋ฐฐ์ดํ๋ฉด ์ข๋ค๋ ์ด์ผ๊ธฐ์ธ๋ฐ, ํญ์ ํต์ฉ๋์ง๋ ์๋ค.
7. ์์ฃผ ์ฌ์ฉํ๋ ๋ฐ์ดํฐ์ ํ์์ ๋ํด์๋ ๋ฏธ๋ฆฌ ์ ์ฒ๋ฆฌ๋ ํ ์ด๋ธ์ ๋ฐ๋ก ๋ณด๊ด, ๊ด๋ฆฌํ๋ ๊ฒ๋ ์ข๋ค.
<์ฐธ๊ณ >
https://velog.io/@redgem92/%EB%8D%B0%EC%9D%B4%ED%84%B0%EB%B2%A0%EC%9D%B4%EC%8A%A4-%EB%8D%B0%EC%9D%B4%ED%84%B0%EB%B2%A0%EC%9D%B4%EC%8A%A4%EB%A5%BC-%EC%82%AC%EC%9A%A9%ED%95%98%EB%8A%94-%EC%9D%B4%EC%9C%A0%EC%99%80-%ED%8A%B9%EC%A7%95 https://yang1650.tistory.com/28
'๐ฅ > Database' ์นดํ ๊ณ ๋ฆฌ์ ๋ค๋ฅธ ๊ธ
[๋ฐ์ดํฐ๋ฒ ์ด์ค] SQL Injection (0) | 2021.10.13 |
---|---|
[๋ฐ์ดํฐ๋ฒ ์ด์ค] NoSQL (0) | 2021.09.09 |
[๋ฐ์ดํฐ๋ฒ ์ด์ค] ํธ๋์ญ์ Transaction ์ด๋ (0) | 2021.08.25 |
[๋ฐ์ดํฐ๋ฒ ์ด์ค] ์ ๊ทํ์ ๋ํด์ (0) | 2021.08.18 |
[๋ฐ์ดํฐ๋ฒ ์ด์ค] Index๋ ๋ฌด์์ธ๊ฐ (0) | 2021.08.11 |