์กฐ์ํ๋์ ์น์ ํ SQL ํ๋์ ์ฝ๊ณ ๊ฐ์ธ์ ์ผ๋ก ๊ณต๋ถํ ๋ด์ฉ์ ์ ๋ฆฌํ ๊ธ์ ๋๋ค.
์ธ๋ฑ์ค ์ค์บ
๋ฐ์ดํฐ๋ฅผ ์ฐพ๋ ๋ฐฉ๋ฒ์ ํฌ๊ฒ 2 ๊ฐ์ง๋ก ๋๋ ์ ์๋ค.
1. ํ ์ด๋ธ ์ ์ฒด ์ค์บ
2. ์ธ๋ฑ์ค ์ค์บ
ํ ์ด๋ธ ์ ์ฒด ์ค์บ์ ๋ง ๊ทธ๋๋ก, ํ ์ด๋ธ ๋ฐ์ดํฐ๊ฐ ์ ์ฅ๋์ด ์๋ ๋ธ๋ก ์ ์ฒด๋ฅผ ์ค์บํ๋ค.
์ธ๋ฑ์ค ์ค์บ์ ์ธ๋ฑ์ค๋ก ์ค์ ํ ๊ธฐ์ค์ ๋ฐ๋ผ ์ผ์ ๋์ ์ค์บํ๋ค.
โ ์ธ๋ฑ์ค ์ค์บ ๋ฐฉ์์ด ํญ์ ์ ๋ฆฌํ ๊น?
๊ทธ๋ ์ง ์๋ค.
๐ก ์ธ๋ฑ์ค ์ค์บ ๋ฐฉ์์ ํฐ ํ ์ด๋ธ์์ ์๋์ ๋ฐ์ดํฐ๋ฅผ ์ฐพ๊ณ ์ ํ ๋ ์ ์ฉํ๋ค.
์๋ก, ์ ์ฒด ํ ์ด๋ธ ์ค์บ์ ์งํํ๋ฉด ๋ฒํผ ์บ์์ ๋ฐ์ดํฐ๊ฐ ์กด์ฌํ์ง ์์ ์, ๋ชจ๋ ๋ ์ฝ๋๋ฅผ ํ์ํ๋ฏ๋ก ์ค๋ ์๊ฐ์ด ์์๋ ์ ์๋ค.
ํ์ง๋ง, ํ๋ฒ ๊ฐ์ ธ์ค๊ณ ๋ ๋ค์๋ ํด๋น ํ ์ด๋ธ๊ณผ ๊ด๋ จํ ๋ฐ์ดํฐ๋ ๋ฌผ๋ฆฌ์ I/O ์์ด ํ์ํ ์ ์๋ค.
์ธ๋ฑ์ค ์ค์บ ๋ฐฉ์์ ๋จ๋ฐ์ ์ธ ์ฟผ๋ฆฌ๋ฅผ ์ํํ๊ธฐ์๋ ์ข์ง๋ง, ์ด์ ์ ์ฌ์ฉํ๋ ์ธ๋ฑ์ค ์ค์บ์ด ์๋ ๋ค๋ฅธ ๊ตฌ์กฐ์ ๋ธ๋ก์ด ํ์ํด์ง๋ ๊ฒฝ์ฐ ๋นํจ์จ์ ์ผ ์ ์๋ค.
โ ์ธ๋ฑ์ค๋ ์๋์ ๋ฐ์ดํฐ๋ฅผ ์ฐพ์ ๋ ์ ์ฉํ๋ค๋ ๊ฒ์ ์๊ฒ ๋๋ฐ, ๊ทธ๋ฌ๋ฉด ์ด๋ค ์์ผ๋ก ๊ฒฐ์ ํ๋๊ฒ ํจ์จ์ ์ธ ๋ฐฉ์์ผ๊น?
๋ง์ฝ, ์๋ ฅ์ด 1.0์์ 1.5 ์ฌ์ด ์ด๋ฉด์ ์ด๋ฆ์ด 'ํ๊ธธ๋' ์ธ ๋ฐ์ดํฐ๋ฅผ ์ฐพ์์ผ ํ๋ค๊ณ ๊ฐ์ ํด๋ณด์.
์๋ ฅ์ด 1.0~1.5์ธ ํ์์ 50๋ช ์ด๊ณ ์ด๋ฆ์ด ํ๊ธธ๋์ธ ํ์์ 2๋ช ์ด๋ผ๊ณ ๊ฐ์ ํ์๋,
1. ์๋ ฅ ์์ผ๋ก ์ ๋ ฌ -> ์ด๋ฆ ์์ผ๋ก ์ ๋ ฌ
2. ์ด๋ฆ ์์ผ๋ก ์ ๋ ฌ -> ์๋ ฅ ์์ผ๋ก ์ ๋ ฌ
์์ ๊ฐ์ ์กฐ๊ฑด์ผ๋ก ์ ๋ ฌ๋ ํ ์ด๋ธ ์ค, ๋น์ฐํ 2๋ฒ ํ ์ด๋ธ์ด ํจ๊ณผ์ ์ผ๋ก ํ์ํ ์ ์๋ค.
์ด๋ฆ์ด ํ๊ธธ๋์ธ ๋ ์ฝ๋์ ์์์ ์ ์ฐพ์ผ๋ฉด 2๋ฒ๋ง ๋น๊ตํ๋ฉด ๋์ง๋ง,
1๋ฒ์ ๊ฒฝ์ฐ ์๋ ฅ์ด 1.0์ธ ๋ ์ฝ๋๋ฅผ ๋ฐ๊ฒฌํ๊ณ 50๋ช ์ค ์ด๋ฆ์ด ํ๊ธธ๋์ธ ๋ ์ฝ๋๋ฅผ ๋ ํ์ํด์ผํ๊ธฐ ๋๋ฌธ์ด๋ค.
์ด์ฒ๋ผ, ์ธ๋ฑ์ค ์ค์บ ๊ณผ์ ์์ ๋ฐ์ํ๋ ๋นํจ์จ์ ์ค์ด๋ ๊ฒ์ด ์ค์ํ๋ค.
๋ํ, ํ์ ์ ๋ณด ํ ์ด๋ธ์ด ์ด๋ฆ์์ผ๋ก ์ ๋ ฌ๋์ด ์๋ค๋ฉด, ์ํ์ ์์ธ์ค๊ฐ ๊ฐ๋ฅํ๋ฏ๋ก ํจ์จ์ ์ผ๋ก ํ์ํ ์ ์๊ฒ ๋๋ค.
์ธ๋ฑ์ค์ ์์ง์ ํ์๊ณผ ์ํ์ ํ์
์์ง์ ํ์
์กฐ๊ฑด์ ๋ง์กฑํ๋ ์ฒซ๋ฒ์งธ ๋ ์ฝ๋์ ์ฃผ์๊ฐ์ ์ฐพ๋ ๊ณผ์ ์ด๋ค.
์ฆ, ์ธ๋ฑ์ค ์ค์บ ์์ ์ง์ ์ ์ฐพ๋ ๊ณผ์ ์ด๋ค.
์ํ์ ํ์
์์ง์ ํ์์ ํตํด ์ธ๋ฑ์ค ์ค์บ์ ์์ํ ์์น๋ฅผ ์ ํ์ผ๋ฉด,
์กฐ๊ฑด์ ๋ง์กฑํ์ง ์๋ ๋ฐ์ดํฐ๊ฐ ๋์ฌ๋๊น์ง ๋ฐ์ดํฐ๋ฅผ ํ์ํ๋ ๊ฒ์ ์ํ์ ํ์์ด๋ผ๊ณ ํ๋ค.
๐จ ์์ฃผํ๋ ์คํด๊ฐ ์๋ค.
์ฑ๋ณ์ด '์ฌ์' ์ด๊ณ ์ด๋ฆ์ด '์ ๊ด์' ์ธ ํ์ํ๋ค๊ณ ๊ฐ์ ํ์ ๋,
[์ฑ๋ณ + ์ด๋ฆ] ๋ก ์ธ๋ฑ์ค๋ฅผ ๊ตฌ์ฑํ ๊ฒฝ์ฐ
'์ฌ์'์ธ ๋ ์ฝ๋ 25๊ฐ๋ฅผ ์ฐพ๊ณ ๊ฑฐ๊ธฐ์ '์ ๊ด์' ์ด๋ฆ์ ์ฐพ์ผ๋ฏ๋ก ์ด 25๋ฒ์ ๊ฒ์ฌ๋ฅผ ์งํํ๊ณ
[์ด๋ฆ + ์ฑ๋ณ] ๋ก ์ธ๋ฑ์ค๋ฅผ ๊ตฌ์ฑํ ๊ฒฝ์ฐ,
'์ ๊ด์'์ธ ๋ ์ฝ๋ 2๊ฐ๋ฅผ ์ฐพ๊ณ , ๊ฑฐ๊ธฐ์ '์ฌ์' ์ฑ๋ณ์ ์ฐพ์ผ๋ฏ๋ก ์ด 2๋ฒ์ ๊ฒ์ฌ๋ฅผ ์งํํ๋ค๋ ๊ฒ์ด๋ค.
๋ฐ๋ผ์, ์ ํ๋(์ค๋ณต๋)๊ฐ ๋ฎ์ ์ด๋ฆ์ ์์ชฝ์ ๋๊ณ ๊ฒฐํฉ ์ธ๋ฑ์ค๋ฅผ ์์ฑํด์ผ ํจ์จ์ ์ด๋ค ๋ผ๋ ๊ฒ์ด๋ค.
ํ์ง๋ง, ์ค์ ๋ก B Tree ๊ตฌ์กฐ๋ก ๊ด๋ฆฌ๋๋ ์ธ๋ฑ์ค๋ ์์ ๊ฐ์ ๋จ๊ณ๋ฅผ ๊ฑฐ์ณ์ ํ์์ด ์ด๋ฃจ์ด์ง๋ ๊ฒ์ด ์๋๋ผ
๐ก ๋ค๋จ๊ณ ๊ตฌ์กฐ๋ก, '์ฌ์' ๋ค ์ค์์ '์ ๊ด์' ์ ์ฐพ๋ ๊ฒ์ด ์๋๋ผ '์ฌ์' ์ด๋ฉด์ '์ ๊ด์' ์ธ ๋ ์ฝ๋๋ฅผ ๋จผ์ ์ฐพ๋๋ค.
์ธ๋ฑ์ค ์ปฌ๋ผ์ ๊ฐ๊ณตํ๋ฉด ์ ์์ ์ผ๋ก ์ฌ์ฉํ ์ ์๋ ์ด์ ?
์ธ๋ฑ์ค๋ก ์ง์ ํ ์ปฌ๋ผ์ ๊ทธ๋๋ก ์ฌ์ฉํ๋ ๊ฒ์ด ์๋๋ผ, ๊ฐ๊ณตํด์ ์ฌ์ฉํ๋ฉด ์ธ๋ฑ์ค ์ค์บ์ ์ฌ์ฉํ ์ ์๊ณ ํ ์ค์บ์ ์ฌ์ฉํด์ผํ๋ค.
์ด์ ๋, ์์๋ฅผ ์๊ฐํ๋ฉด ๊ฐ๋จํ๋ค.
์ธ๋ฑ์ค๊ฐ ์์ผ ์ปฌ๋ผ์ด๊ณ , ์ด๋ฅผ ๊ธฐ์ค์ผ๋ก ํ ์ด๋ธ ๋ฐ์ดํฐ๊ฐ ์ ๋ ฌ๋์ด ์๋ค๊ณ ๊ฐ์ ํ์ ๋,
1995๋ ์ ๋ฐ์ดํฐ๋ฅผ ํ์ํ๊ธฐ ์ํ ์์์ ์ ์ฐพ๋ ๊ฒ์ ์ฝ์ง๋ง
๋ง์ฝ 12์์์ ํ์ํ๊ณ ์ ํ ๋์๋, 1993๋ ์์๋ 12์์์ด ์๊ณ 1994๋ ์์๋ 12์์์ด ์๊ธฐ ๋๋ฌธ์ ์ธ๋ฑ์ค ์ค์บ ์์์ ์ ์ฐพ์ ์ ์๋ค.
like ๋ฌธ๋ฒ์ ์ฌ์ฉํ๊ฑฐ๋ or๋ก ์ฌ๋ฌ๊ฐ์ ์นผ๋ผ ์กฐ๊ฑด์ ์ถ๊ฐํ๋ ๊ฒฝ์ฐ๋ ๋ง์ฐฌ๊ฐ์ง๋ก ์ธ๋ฑ์ค ์ค์บ ์์์ ์ ์ฐพ์ ์ ์์ด ์ธ๋ฑ์ค ์ค์บ์ ํ์ฉํ ์ ์๊ฒ๋๋ค.
๐ก ๋จ,
SELECT * FROM ๊ณ ๊ฐ WHERE ์ ํ๋ฒํธ in (:tel_no1, :tel_no2)โ
์์ ๊ฐ์ด ์กฐ๊ฑด์ ์ in ์ ์ฌ์ฉํ๋ฉด, ์ด์ ์ ์ค๋ช ํ๋ ๊ฒ๊ณผ ๊ฐ์ ์ด์ ๋ก ์ธ๋ฑ์ค ์ค์บ์ด ๋ถ๊ฐ๋ฅํ์ง๋ง
SELECT * FROM ๊ณ ๊ฐ WHERE ์ ํ๋ฒํธ = :tel_no1 UNION ALL SELECT * FROM ๊ณ ๊ฐ WHERE ์ ํ๋ฒํธ = :tel_no2
์์ ๊ฐ์ ๋ฐฉ์์ด๋ฉด ์ธ๋ฑ์ค ์ค์บ 2๋ฒ์ ๋ฐ๋ณตํ ๋ค์์ ํฉ์น ๊ฒฐ๊ณผ์ด๋ฏ๋ก ์ธ๋ฑ์ค ์ค์บ์ ์ฌ์ฉํ ์ ์๋ค.
๋ฐ๋ผ์, in ๋ฌธ๋ฒ์ ์ฌ์ฉํ๋ฉด ์ตํฐ๋ง์ด์ ๋ ๋ฐ์ธ๋ ์กฐ๊ฑด ๊ฐ์ ๋ฒ ๋งํผ ์ธ๋ฑ์ค ์ค์บ์ ๋ฐ๋ณตํ๋ ๋ฐฉ์์ ์ฌ์ฉํ๋ค.
๊ทธ๋ฆฌ๊ณ , ์ธ๋ฑ์ค ์กฐ๊ฑด์ ์ฌ๋ฌ๊ฐ๋ก ์ค์ ํ ๊ฒฝ์ฐ, ์ธ๋ฑ์ค ์ ๋ ์ปฌ๋ผ์ด ์กฐ๊ฑด์ ์ ์์ด์ผ ํ๋ค.
์ธ๋ฑ์ค๋ฅผ [์ด๋ฆ + ๋์ด] ๋ก ์ง์ ํด๋์๋ค๋ฉด, ๋์ด๋ฅผ ๊ธฐ์ค์ผ๋ก๋ ์ธ๋ฑ์ค ์ค์บ์ด ๋ถ๊ฐ๋ฅํ๋ค๋ ์๋ฏธ์ด๋ค.
๐ก ๋ํ, ์ ๋ ฌ ์ฐ์ฐ์ ์๋ตํ ์ ์๊ฒ ์ธ๋ฑ์ค๊ฐ ๊ตฌ์ฑ๋์ด ์๋ฐ๋ฉด, ORDER BY ์ ์ ์๋ตํ๋๋ก ์ตํฐ๋ง์ด์ ๋ ๊ณํํ๋ค.
์๋ก, [ ์ฅ๋น ๋ฒํธ + ๋ณ๊ฒฝ์ผ์ + ๋ณ๊ฒฝ์๋ฒ ] ์ผ๋ก ์ธ๋ฑ์ค๋ฅผ ๊ตฌ์ฑํ ๊ฒฝ์ฐ
SELECT
*
FROM
์ฅ๋น
WHERE
์ฅ๋น๋ฒํธ = 'C'
ORDER BY
๋ณ๊ฒฝ์ผ์, ๋ณ๊ฒฝ์๋ฒ
์์ ๊ฐ์ SQL์ ์ ๋ฌ ๋ฐ์์,
์ธ๋ฑ์ค์ ์ ๋ ์นผ๋ผ์ธ ์ฅ๋น๋ฒํธ๋ฅผ ๋ฐํ์ผ๋ก ์ธ๋ฑ์ค ์ค์บ์ ํ๊ฒ๋๋ฉด ๋ณ๊ฒฝ์ผ์์ ๋ณ๊ฒฝ์๋ฒ์ ์์์ ์ ๋ ฌ๋์ด์์ผ๋ฏ๋ก
์คํ ๊ณํ ์, ์ํธ ์ฐ์ฐ์ ์๋ตํ๋ค.
์นผ๋ผ์ ์๋ ํ๋ณํ
๋ฌธ์ํ ๋ฐ์ดํฐ์ธ ์๋ ์์ผ์ ์ธ๋ฑ์ค๋ก ์ง์ ํ์๋,
SELECT
*
FROM
๊ณ ๊ฐ
WHERE
์๋
์์ผ = 19981206
์ ์ฟผ๋ฆฌ๋ฅผ ์คํํ๋ฉด, ํ ์ด๋ธ ์ ์ฒด ์ค์บ์ด ์ํ๋๋ค.
๊ทธ ์ด์ ๋
๐จ WHERE ์กฐ๊ฑด์ ์์ ์๋ ์์ผ์ ๋ฌธ์ํ ์นผ๋ผ์ธ๋ฐ 19981206 ์ด๋ผ๋ ์ซ์ํ๊ณผ ๋น๊ต๊ฐ ๋ฐ์ํ๊ณ
๋ฌธ์ํ ๋ฐ์ดํฐ๊ฐ TO_NUMBER(์๋ ์์ผ) ํจ์๋ฅผ ํตํด ์ซ์ํ์ผ๋ก ๋ณํ์ด ๋์ด ์ธ๋ฑ์ค๊ฐ ๊ฐ๊ณต์ด ๋์๊ธฐ ๋๋ฌธ์ด๋ค.
๋ฌธ์ํ ๋ฐ์ดํฐ์ธ ์๋ ์์ผ์ ์ด์ด ์ข๊ฒ ์ซ์๋ก๋ง ์ด๋ฃจ์ด์ ธ ์๋ ํ๋ณํ์ด ๋๊ธดํ์ง๋ง, ์ซ์ํ์ผ๋ก ์๋ ํ๋ณํ์ด ์ผ์ด๋์ง ์๋ ๋ฐ์ดํฐ์ ๊ฒฝ์ฐ๋ ์๋ฌ๋ ๋ฐ์ํ ์ ์๋ค.
๋ฐ๋ผ์, ์กฐ๊ฑด์ ์์ ์ธ๋ฑ์ค ๋ฐ์ดํฐ๊ฐ ๊ฐ๊ณต๋์ง ์๋๋ก ์ฃผ์ํด์ผํ๋ค.
๐ก ์ฐธ๊ณ ๋ก LIKE ๋ฌธ๋ฒ์ ๊ฒฝ์ฐ ์ซ์ํ ๋ฐ์ดํฐ๋ฅผ LIKE ๋ฌธ๋ฒ์ ์ฌ์ฉํ๋ฉด ์๋์ผ๋ก ๋ฌธ์ํ ๋ฐ์ดํฐ๋ก ํ๋ณํ์ด ์ด๋ฃจ์ด์ง๋ค.
๋ฐ๋ผ์, ์ซ์ํ ์นผ๋ผ์ด ์ธ๋ฑ์ค์ผ๋ WHERE ์กฐ๊ฑด์ ์์ LIKE ๋ฌธ๋ฒ์ ์ฌ์ฉํ๋ฉด ๊ฐ๊ณต์ด ์ด๋ฃจ์ด์ง๋ฏ๋ก ์ธ๋ฑ์ค ์ค์บ ํจ์จ์ ์ป์ ์ ์๋ค.