Real MySQL ์ฑ ์ ๊ณต๋ถํ๋ฉด์ ์ ๋ฆฌํ ๋ด์ฉ์ ๋๋ค.
๋ฐ์ดํฐ๋ฒ ์ด์ค์ ์ฑ๋ฅ ํ๋์ ์ด๋ป๊ฒ ๋์คํฌ I/O๋ฅผ ์ค์ด๋๋๊ฐ ๊ด๊ฑด์ผ๋๊ฐ ์๋นํ ๋ง๋ค.
๐ก ๋ฐ์ดํฐ๋ฒ ์ด์ค ํ ์ด๋ธ์ ๋ชจ๋ ๋ฐ์ดํฐ๋ฅผ ๊ฒ์ํด์ ์ํ๋ ๊ฒฐ๊ณผ๋ฅผ ๊ฐ์ ธ์ค๋ ค๋ฉด ์๊ฐ์ด ์ค๋ ๊ฑธ๋ฆฐ๋ค.
๊ทธ๋์ ์นผ๋ผ์ ๊ฐ๊ณผ ํด๋น ๋ ์ฝ๋๊ฐ ์ ์ฅ๋ ์ฃผ์๋ฅผ ํค์ ๊ฐ์ ์์ผ๋ก ์ผ์ ์ธ๋ฑ์ค๋ฅผ ๋ง๋ค์ด ๋๋ค.
๊ทธ๋ฆฌ๊ณ ์นผ๋ผ์ ๊ฐ์ ์ฃผ์ด์ง ์์๋ก ๋ฏธ๋ฆฌ ์ ๋ ฌํด์ ๋ณด๊ดํ๋ค.
๐ก ์กฐํ ์์ฒญ ์, ๋ฐ์ดํฐ๊ฐ ์ ๋ ฌ๋์ด ์๊ธฐ ๋๋ฌธ์ ๋นจ๋ฆฌ ์ํ๋ ๊ฐ์ ์ฐพ์์ฌ ์ ์๋ค. (SELECT
)
๐จ ๋ฐ์ดํฐ๊ฐ ์ ์ฅ๋ ๋ ๋ง๋ค ํญ์ ๊ฐ์ ์ ๋ ฌํด์ผ ํ๋ฏ๋ก ์ ์ฅํ๋ ๊ณผ์ ์ด ๋ณต์กํ๊ณ ๋๋ฆฌ๋ค. (INSERT
·UPDATE
·DELETE
)
๋ฐ์ดํฐ ์ ์ฅ ๋ฐฉ์ ๋ณ๋ก ๊ตฌ๋ถํ๋ฉด, ๋ํ์ ์ผ๋ก B-Tree ์ธ๋ฑ์ค์ Hash ์ธ๋ฑ์ค๋ก ๊ตฌ๋ถํ ์ ์๋ค.
B-Tree (Balanced-Tree) ์ธ๋ฑ์ค
B-Tree๋ ์นผ๋ผ์ ์๋ ๊ฐ์ ๋ณํ์ํค์ง ์๊ณ ์ธ๋ฑ์ค ๊ตฌ์กฐ์ฒด ๋ด์์๋ ํญ์ ์ ๋ ฌ๋ ์ํ๋ก ์ ์งํ๋ค.
B-Tree๋ ์ต์์์ ํ๋์ ๋ฃจํธ ๋
ธ๋
๊ฐ ์กด์ฌํ๊ณ ๊ทธ ํ์์ ์์ ๋
ธ๋๊ฐ ๋ถ์ด์๋ ํํ์ด๋ค.
ํธ๋ฆฌ ๊ตฌ์กฐ์ ๊ฐ์ฅ ํ์์ ์๋ ๋
ธ๋๋ฅผ ๋ฆฌํ ๋
ธ๋
๋ผ ํ๊ณ ์ค๊ฐ์ ๋
ธ๋๋ฅผ ๋ธ๋์น ๋
ธ๋
๋ผ๊ณ ํ๋ค.
๋ฆฌํ ๋ ธ๋๋ ํญ์ ์ค์ ๋ฐ์ดํฐ ๋ ์ฝ๋๋ฅผ ์ฐพ์๊ฐ๊ธฐ ์ํ ์ฃผ์๊ฐ์ ๊ฐ์ง๊ณ ์๋ค.
๊ฒ์ํ๋ ค๋ ์ธ๋ฑ์ค์ ์ ์ฅ๋์ด ์๋ ์ธ๋ฑ์ค ๋ ์ฝ๋๋ฅผ ๋น๊ตํ๋ฉด์, ๊ฐ๋ฆฌํค๋ ํ์ ํ์ด์ง๋ก ๊ณ์ ์ด๋ํ๊ณ
๋ฃจํธ ๋ ธ๋์ ๋๋ฌํด, ๊ฒ์ํ๋ ค๋ ์ธ๋ฑ์ค์ ์ผ์นํ๋ ๋ ์ฝ๋๋ฅผ ๋ฐ๊ฒฌํ๊ณ ,
ํด๋น ์ธ๋ฑ์ค๊ฐ ํค๋ก์ ๊ฐ์ ๊ฐ๊ณ ์๋ ๋ ์ฝ๋ ์ฃผ์๋ก ์ฐพ์ผ๋ ค๋ ๋ฐ์ดํฐ์ ์ ๊ทผํ๊ฒ ๋๋ค.
๐ ์ธ๋ฑ์ค ํค ์ถ๊ฐ ๋ฐ ์ญ์
1๏ธโฃ ์ธ๋ฑ์ค ํค ์ถ๊ฐ
์๋ก์ด ์ธ๋ฑ์ค๊ฐ B-Tree ์ ์ ์ฅ๋ ๋๋ ์ ์ฅ๋ ํค ๊ฐ์ ์ด์ฉํด B-Tree์์ ์ ์ ํ ์์น๋ฅผ ๊ฒ์ํด์ผ ํ๋ค.
์ ์ฅ๋ ์์น๊ฐ ๊ฒฐ์ ๋๋ฉด ๋ ์ฝ๋์ ํค๊ฐ๊ณผ ํด๋น ๋ ์ฝ๋์ ์ฃผ์๊ฐ์ ๋ฆฌํ ๋ ธ๋์ ์ ์ฅํ๋ค.
๐จ ๋ฆฌํ ๋ ธ๋๊ฐ ๊ฝ ์ฐฌ ๊ฒฝ์ฐ, ๋ฆฌํ ๋ ธ๋๊ฐ ๋ถ๋ฆฌ๋์ด์ผ ํ๋ค. ์ด๋ ์์ ๋ธ๋์น ๋ ธ๋๊น์ง ์ฒ๋ฆฌํด์ผ ํ๋ฏ๋ก ๋น์ฉ์ด ๋ง์ด ๋ฐ์ํ๋ค.
2๏ธโฃ ์ธ๋ฑ์ค ํค ์ญ์
์ญ์ ํ๋ ค๋ ์ธ๋ฑ์ค๋ฅผ ํค ๊ฐ์ผ๋ก ํ๋ ๋ฆฌํ ๋ ธ๋๋ฅผ ์ฐพ์ ์ญ์ ํ๋ค.
์ญ์ ๋ ๊ณต๊ฐ์ ๋ฐฉ์นํ๊ฑฐ๋ ์ฌํ์ฉํ ์ ์๋ค.
3๏ธโฃ ์ธ๋ฑ์ค ํค ๋ณ๊ฒฝ
์ธ๋ฑ์ค๋ฅผ ๋ณ๊ฒฝํ๋ ์์ ์ ํด๋น ๋ฆฌํ ๋ ธ๋๋ฅผ ์ฐพ์์ ๋ณ๊ฒฝํ๋ ๊ฒ์ผ๋ก ํด๊ฒฐ๋์ง ์๋๋ค.
๋ค์ ์ธ๋ฑ์ค๋ฅผ ์ ๋ ฌํด์ผํ๊ธฐ ๋๋ฌธ์ด๋ค.
๋ฐ๋ผ์, ๋ณ๊ฒฝ ๊ณผ์ ์ ๋ณ๊ฒฝํ๋ ค๋ ์ธ๋ฑ์ค๋ฅผ ํค ๊ฐ์ผ๋ก ํ๋ ๋ฆฌํ ๋ ธ๋๋ฅผ ์ฐพ์ ์ญ์ ํ ํ ๋ณ๊ฒฝํ ์ธ๋ฑ์ค๋ฅผ ์๋ก ์ถ๊ฐํ๋ ๋ฐฉ์์ผ๋ก ์งํ๋๋ค.
4๏ธโฃ ์ธ๋ฑ์ค ํค ๊ฒ์
B-Tree ์ธ๋ฑ์ค๋ฅผ ์ด์ฉํ ๊ฒ์์ 100% ์ผ์น ๋๋ ๊ฐ์ ์๋ถ๋ถ๋ง ์ผ์นํ๋ ๊ฒฝ์ฐ์ ์ฌ์ฉํ ์ ์๋ค.
InnoDB ์คํ ๋ฆฌ์ง ์์ง์ ๊ฒฝ์ฐ ๊ฒ์์ ์ํํ ์ธ๋ฑ์ค๋ฅผ ์ ๊ทผ ํ ํ ์ด๋ธ์ ๋ ์ฝ๋๋ฅผ ์ ๊ทธ๋ ๋ฐฉ์์ผ๋ก ๊ตฌํ๋ผ ์๋ค.
๋ฐ๋ผ์, ํ ์ด๋ธ์ ์ ์ ํ ์ฌ์ฉํ ์ ์๋ ์ธ๋ฑ์ค๊ฐ ์์ผ๋ฉด ๋ถํ์ํ๊ฒ ๋ง์ ๋ ์ฝ๋๋ฅผ ์ ๊ธ ์ ์๊ธฐ ๋๋ฌธ์ ์ธ๋ฑ์ค์ ์ค๊ณ๊ฐ ์ค์ํ๊ณ ๋ง์ ๋ถ๋ถ์ ์ํฅ์ ๋ฏธ์น๋ค.
๐ ์ธ๋ฑ์ค ์ฌ์ฉ์ ์ํฅ์ ๋ฏธ์น๋ ์์
1๏ธโฃ ์ธ๋ฑ์ค ํค ๊ฐ์ ํฌ๊ธฐ
InnoDB ์คํ ๋ฆฌ์ง ์์ง์ ๋์คํฌ์ ํ์ด์ง ๋จ์๋ก ๊ด๋ฆฌํ๋ค.
๋ฒํผ ํ์์ ๋ฐ์ดํฐ๋ฅผ ๋ฒํผ๋งํ๋ ๊ธฐ๋ณธ ๋จ์์ด๊ธฐ๋ ํ๋ค.
์ธ๋ฑ์ค๋ ํ์ด์ง ๋จ์๋ก ๊ด๋ฆฌ๋๋ค.
๐ก ๋ฐ๋ผ์, ์ธ๋ฑ์ค ์์ฒด์ ํฌ๊ธฐ๋ ํ์ด์ง์ ์ธ๋ฑ์ค๊ฐ ๋ช๊ฐ ๋ค์ด๊ฐ ์ ์๋์ง๋ฅผ ๊ฒฐ์ ํ๋ค.
๐จ ์ธ๋ฑ์ค ํค ํฌ๊ธฐ๊ฐ ์ปค์ง ์๋ก ํ ํ์ด์ง์ ์์ฉํ ์ ์๋ ์ธ๋ฑ์ค์ ์์ด ์ค์ด๋ค๊ณ , ์ด๋ ํน์ ์กฐ๊ฑด์์ ๋์คํฌ ์ ๊ทผ์ ์ถ๊ฐ์ ์ผ๋ก ํ๋๋ก ๋ง๋ค ์ ์๋ค.
๋ฐ๋ผ์, ๊ฐ๋ฅํ๋ฉด ์ธ๋ฑ์ค ํค ๊ฐ์ ํฌ๊ธฐ๋ ์๊ฒ ๋ง๋๋ ๊ฒ์ด ์ข๋ค.
2๏ธโฃ ์ ํ๋
์ ํ๋(Selectivity)
๋๋ ๊ธฐ์์ฑ(Cardinality)
๋ ๊ฑฐ์ ๊ฐ์ ์๋ฏธ๋ก ์ฌ์ฉ๋๋ฉฐ,
๋ชจ๋ ์ธ๋ฑ์ค ํค ๊ฐ ๊ฐ์ด๋ฐ ์ ๋ํฌํ ๊ฐ์ ์๋ฅผ ์๋ฏธํ๋ค.
์ ํ๋๊ฐ ๋์ ์๋ก (์ค๋ณต ๋ฐ์ดํฐ๊ฐ ์ ์ ์๋ก) ํจ์จ์ ์ผ๋ก ์ฒ๋ฆฌํ ์ ์๋ค.
๊ฒ์ํ๋ ค๋ ์ธ๋ฑ์ค์ ์ผ์นํ๋ ๋ ์ฝ๋๋ฅผ ๋ชจ๋ ์ฝ์ ๋ค ์ถ๊ฐ์ ์ธ ์กฐ๊ฑด์ ๋ง์กฑํ๋ ๋ ์ฝ๋๋ฅผ ์ฐพ์ผ๋ฏ๋ก,
์ค๋ณต๋๋ ์ธ๋ฑ์ค๊ฐ ๋ง์์ง ์๋ก ์ฑ๋ฅ์ด ๋จ์ด์ง๊ฒ ๋๋ค.
3๏ธโฃ ๋ ์ฝ๋ ๊ฑด์
์ผ๋ฐ์ ์ธ DBMS์ ์ตํฐ๋ง์ด์ ์์๋ ์ธ๋ฑ์ค๋ฅผ ํตํด ๋ ์ฝ๋ 1๊ฑด์ ์ฝ๋ ๊ฒ์ด
ํ ์ด๋ธ์์ ์ง์ ๋ ์ฝ๋ 1๊ฑด์ ์ฝ๋ ๊ฒ๋ณด๋ค 4~5๋ฐฐ ์ ๋ ๋น์ฉ์ด ๋ ๋ง์ด ๋๋ ์์ ์ธ ๊ฒ์ผ๋ก ์์ธกํ๋ค.
๐ก ๋ฐ๋ผ์, ์ธ๋ฑ์ค๋ฅผ ํตํด ์ฝ์ด์ผ ํ ๋ ์ฝ๋์ ๊ฑด์๊ฐ ์ ์ฒด ํ ์ด๋ธ ๋ ์ฝ๋์ 20~25%๋ฅผ ๋์ด์๋ฉด ์ธ๋ฑ์ค๋ฅผ ์ด์ฉํ์ง ์๋ ๊ฒ์ด ํจ์จ์ ์ด๋ค.
๐ ์ธ๋ฑ์ค ์ค์บ ๋ฐฉ์
1๏ธโฃ ์ธ๋ฑ์ค ๋ ์ธ์ง ์ค์บ
SELECT * FROM employees WHERE first_name BETWEEN 'Ebbe' AND 'Gad';
์์ ๊ฐ์ด first_name
์ด ์ธ๋ฑ์ค ์นผ๋ผ์ผ ๋, ๋ฒ์๋ก ๊ฒ์ํ๋ ์ฟผ๋ฆฌ๊ฐ ์์ ์ ์๋ค.
์ด ๊ฒฝ์ฐ ์ธ๋ฑ์ค ๋ ์ธ์ง ์ค์บ์ ์ฌ์ฉํ๋ค.
์์ ๊ฐ์ด, ์์ํด์ผ ํ ์์น๋ฅผ ์ฐพ์ผ๋ฉด ๋ ์ฝ๋๋ฅผ ์์๋๋ก ์ฝ๋๋ค.
์์๋๋ก ์ฝ๋ค๊ฐ ๋ฉ์ถฐ์ผ ํ ์์น์ ๋ค๋ค๋ฅด๋ฉด ์ง๊ธ๊น์ง ์ฝ์ ๋ ์ฝ๋๋ฅผ ์ฌ์ฉ์์๊ฒ ๋ฐํํ๊ณ ์ฟผ๋ฆฌ๋ฅผ ๋๋ธ๋ค.
๐จ ๋จ, ์ธ๋ฑ์ค ํ์ด์ง ์์ผ๋ก๋ ์ ๋ ฌ๋์ด ์์ง๋ง, ๋ ์ฝ๋ ์ฃผ์๋ ์ ๋ ฌ๋์ด ์์ง ์๋ค.
๋ฐ๋ผ์, ์ง๊ธ๊น์ง ์ฝ์ ์ฟผ๋ฆฌ๋ฅผ ์ฌ์ฉ์์๊ฒ ๋ฐํํ ๋, ๋๋ค ๋์คํฌ I/O๊ฐ ๋ ์ฝ๋ 1๊ฑด๋น 1๋ฒ ๋ฐ์ํ๋ค.
2๏ธโฃ ์ธ๋ฑ์ค ํ ์ค์บ
์ธ๋ฑ์ค์ ์ฒ์๋ถํฐ ๋๊น์ง ๋ชจ๋ ์ฝ๋ ๋ฐฉ์์ด๋ค.
๋ํ์ ์ผ๋ก, ์ฟผ๋ฆฌ์ ์กฐ๊ฑด์ ์ ์ฌ์ฉ๋ ์นผ๋ผ์ด ์ธ๋ฑ์ค์ ์ฒซ ๋ฒ์งธ ์นผ๋ผ์ด ์๋ ๊ฒฝ์ฐ ์ฌ์ฉ๋๋ค.
์๋ก, ์ธ๋ฑ์ค๊ฐ (A, B, C) ์์๋ก ๋ง๋ค์ด์ ธ์์ ๋, ์ฟผ๋ฆฌ์ ์กฐ๊ฑด์ ์ด B๋ C ์นผ๋ผ์ผ๋ก ๊ฒ์ํ๋ ๊ฒฝ์ฐ์ด๋ค.
๐จ ๋จ, ๋ ์ฝ๋ ๊ฑด ์๊ฐ ์ ์ ๊ฒฝ์ฐ ์ธ๋ฑ์ค๋ฅผ ์ฌ์ฉํ๋ฉด ์ค๋ฒํค๋๊ฐ ๋ฐ์ํ๋ฏ๋ก, ํ ์ด๋ธ ์ ์ฒด๋ฅผ ์ค์บํ๋๊ฒ ํจ์จ์ ์ผ ์ ์์ผ๋ฉฐ
์ด์ ์ ์ค๋ช ํ๋ฏ์ด ์ ์ฒด ํ ์ด๋ธ์ 25%๋ฅผ ๋์ด๊ฐ๋ ์ค์บ์ธ ๊ฒฝ์ฐ ์ธ๋ฑ์ค ์ค์บ์ด ๋นํจ์จ์ ์ผ ์ ์๋ค.
3๏ธโฃ ๋ฃจ์ค(Loose) ์ธ๋ฑ์ค ์ค์บ
๋์จํ๊ฒ ๋ฌ์ฑ๋ฌ์ฑ ์ธ๋ฑ์ค๋ฅผ ์ฝ๋ ๊ฒ์ ์๋ฏธํ๋ค.
์ฃผ๋ก GROUP BY
๋๋ MAX()
, MIN()
ํจ์์ ๋ํด ์ต์ ํ๋ฅผ ํ๋ ๊ฒฝ์ฐ์ ์ฌ์ฉ๋๋ค.
์ ๊ทธ๋ฆผ์ ๊ฒฝ์ฐ, dept_no
์ emp_no
์ปฌ๋ผ์ด ์ธ๋ฑ์ค๋ก ์ฌ์ฉ๋๋๋ฐ,
SELECT dept_no, MIN(emp_no) FROM dept_emp WHERE dep_no BETWEEN 'd001' AND 'd004' GROUP BY dept_no;
์์ ๊ฐ์ ์ฟผ๋ฆฌ์ ๊ฒฝ์ฐ, ๊ฐ ์ธ๋ฑ์ค ๋ฃจํธ ํ์ด์ง์ ์ฒซ ๋ฒ์งธ ๋ ์ฝ๋๋ง ๊ฐ์ ธ์ค๋ฉด ๋๋ฏ๋ก ๋ฃจ์ค ์ธ๋ฑ์ค ์ค์บ์ ํ ์ ์๋ค.
์์ ๊ฐ์ด, ๋ฃจ์ค ์ธ๋ฑ์ค ์ค์บ์ ์ฌ์ฉํ๋ ค๋ฉด ์ ์ฝ ์กฐ๊ฑด์ด ํ์ํ๋ค.
4๏ธโฃ ์ธ๋ฑ์ค ์คํต ์ค์บ
์ธ๋ฑ์ค๋ฅผ (A,B) ๋ก ์ค์ ํ๋ฉด, WHERE ์กฐ๊ฑด์ ์ B๋ง ์ฌ์ฉํ๋ ์ฟผ๋ฆฌ๋ ์ธ๋ฑ์ค๋ฅผ ์ฌ์ฉํ ์ ์๋ค.
ํ์ง๋ง, MySQL 8.0 ๋ถํฐ๋ B ๋ง์ผ๋ก๋ ์ธ๋ฑ์ค ๊ฒ์์ด ๊ฐ๋ฅํ๊ฒ ํด์ฃผ๋ ์ธ๋ฑ์ค ์คํต ์ค์บ ์ต์ ํ ๊ธฐ๋ฅ์ด ๋์ ๋์๋ค.
// ์ธ๋ฑ์ค๊ฐ (gender, birth_date) ์ผ ๋
SELECT gender, birth_date FROM employees WHERE birth_date >= '1970-01-01';
์ ์ฟผ๋ฆฌ๋ ์ธ๋ฑ์ค ์คํต ์ค์บ์ด ์๋ค๋ฉด, ์ธ๋ฑ์ค ํ์ด์ง ํ ์ค์บ์ ํ๋ค.
ํ์ง๋ง, ์ธ๋ฑ์ค ์คํต ์ค์บ์ ํ๋ ๊ฒฝ์ฐ ์๋์ ๊ฐ๋ค.
์ ์ฒ๋ผ, ์ธ๋ฑ์ค ํ ์ค์บ์ ํ๋ ๊ฒ์ด ์๋
SELECT gender, birth_date FROM employees WHERE gender = 'M' and birth_date >= '1905-02-01';
SELECT gender, birth_date FROM employees WHERE gender = 'F' and birth_date >= '1965-02-01';
์์ ๊ฐ์ ์ฟผ๋ฆฌ 2๊ฐ๋ฅผ ์คํํ ๊ฒ๊ณผ ๋น์ทํ ํํ์ ์ต์ ํ๋ฅผ ํ๊ฒ ๋๋ค.
๐จ ๋จ, ์ ํ ์ธ๋ฑ์ค์ ์ ํ๋๊ฐ ๋๋ฌด ๋์ผ๋ฉด ์ค์บ ์์์ ์ ๋๋ฌด ๋ง์ด ๊ฒ์ํด์ผํด์ ์ฑ๋ฅ์ด ๋จ์ด์ง ์ ์๋ค. (์ต์ ํ๋ ์ฟผ๋ฆฌ ๊ฐฏ์๊ฐ ๋์ด๋๋ค.)
๊ทธ๋ฆฌ๊ณ ์ธ๋ฑ์ค๋ก ์ง์ ๋ ์ปฌ๋ผ์ผ๋ก ์ฒ๋ฆฌ ๊ฐ๋ฅํ ์ฟผ๋ฆฌ์ฌ์ผ ์ต์ ํ๋ฅผ ํ ์ ์๋ค.
(SELECT * FROM
์ ํด๋ฒ๋ฆฌ๋ฉด ์ธ๋ฑ์ค๋ก ์ง์ ๋ ์ปฌ๋ผ ์ธ์ ๋ค๋ฅธ ์ปฌ๋ผ๋ ํ์ํด์ง๋ฏ๋ก ์ธ๋ฑ์ค ์คํต ์ค์บ์ ์ฌ์ฉํ ์ ์๋ค.)
๐ B-tree ์ธ๋ฑ์ค ์ ๋ ฌ๊ณผ ์ฑ๋ฅ
MySQL 8.0 ๋ถํฐ๋ ์ ๋ ฌ ์์๋ฅผ ํผํฉํ ์ธ๋ฑ์ค๋ฅผ ์์ฑํ ์ ์๋ค.
CREATE INDEX ix_index ON employees (column1 ASC , column2 DESC);
์์ ๊ฐ์ด ์ธ๋ฑ์ค๋ฅผ ์ค์ ํ ์นผ๋ผ์ ์ ๋ ฌ ๋ฐฉ๋ฒ์ ๋ช ์ํ๋ฉด ๋๋ค.
โ ๋ง์ฝ ์ค๋ฆ์ฐจ์์ผ๋ก ์ค์ ํ ์ธ๋ฑ์ค๋ฅผ ์ญ์์ผ๋ก ์ ๋ ฌํด์ ๋ ์ฝ๋ 1๊ฑด์ ์กฐํํ๋ ์ฟผ๋ฆฌ๋ ์ด๋ป๊ฒ ์คํ๋ ๊น?
๐ก ์ธ๋ฑ์ค ์์ฑ ์, ์ค๋ฆ์ฐจ์์ผ๋ก ์ค์ ํ๊ธฐ ๋๋ฌธ์ ์ค๋ฆ์ฐจ์์ผ๋ก ์ญ ์ฝ๋ค๊ฐ ๋ง์ง๋ง ๋ ์ฝ๋๋ฅผ ์ฝ๋ ๊ฒ์ด ์๋๋ผ
์ตํฐ๋ง์ด์ ๋ ์ธ๋ฑ์ค๋ฅผ ์ญ์์ผ๋ก ์ ๊ทผํ ๋ค, ์ฒซ๋ฒ์งธ ๋ ์ฝ๋๋ง ์ฝ์ด์ค๋๋ก ํ๋ค.
โ ๊ทธ๋ ๋ค๋ฉด ์ฑ๋ฅ์ ๋์ผํ ๊น?
์๊ฐํด๋ณด์.
id ์นผ๋ผ์ด ์ค๋ฆ์ฐจ์์ธ ์ธ๋ฑ์ค๋ผ๊ณ ๊ฐ์ ํ๋ฉด, ์ ์ฒด ๋ ์ฝ๋ ์กฐํ ์ ์์๋๋ก ์ฝ์ผ๋ฉด ๋๋ค.
๊ทธ๋ฆฌ๊ณ ์ญ์์ผ๋ก ์กฐํ ์์ฒญ์ ํ์๋๋ ์ตํฐ๋ง์ด์ ๊ฐ ์ธ๋ฑ์ค๋ฅผ ๊ธฐ์ค์ผ๋ก ๋ค์์๋ถํฐ ์กฐํํ๋๋ก ํ ๊ฒ์ด๋ค.
์คํ ๊ฒฐ๊ณผ, 1์ฒ 2๋ฐฑ์ฌ๋ง ๊ฑด์ ์ค์บํ์ ๋, ์ฝ 1.2์ด
์ ๋ ์ฐจ์ด๊ฐ ๋๋ ๊ฒ์ ํ์ธํ ์ ์๋ค.
์ฝ 28.9%
๋ ์๊ฐ์ด ๊ฑธ๋ฆฌ๋ ๊ฒ์ด๋ค.
์ด๋ฌํ ์ฑ๋ฅ ์ฐจ์ด๊ฐ ๋ฐ์ํ๋ ์ด์ ๋ ๋ค์๊ณผ ๊ฐ๋ค.
์์ ๊ฐ์ด, ํ์ด์ง ๋ด์์ ์ธ๋ฑ์ค ๋ ์ฝ๋๋ ๋จ๋ฐฉํฅ์ผ๋ก ์ฐ๊ฒฐ๋ ๊ตฌ์กฐ์ด๋ค.
๋ฐ๋ผ์, ์ด๊ธฐ์ ์ค์ ํ ์ธ๋ฑ์ค์ ๋ฐฉํฅ์ ๋ฐ๋๋๋ ์ง์๋ฅผ ํ๋ฉด, ์ถ๊ฐ์ ์ธ ๋น์ฉ์ด ๋ฐ์ํ๋ ๊ฒ์ด๋ค.
์ ๋ฌธ ๊ฒ์ ์ธ๋ฑ์ค
B-Tree ์ธ๋ฑ์ค๋ ์ ์ฒด ์ผ์น ๋๋ ์ข์ธก ์ผ๋ถ ์ผ์น์ ๊ฐ์ ๊ฒ์๋ง ๊ฐ๋ฅํ๋ค.
๋ฌธ์์ ๋ด์ฉ ์ ์ฒด๋ฅผ ์ธ๋ฑ์คํํด์ ํน์ ํค์๋๊ฐ ํฌํจ๋ ๋ฌธ์๋ฅผ ๊ฒ์ํ๋ ์ ๋ฌธ ๊ฒ์์๋ ์ฌ์ฉํ ์ ์๋ค.
์ ๋ฌธ ๊ฒ์์ ์ํ ์ธ๋ฑ์ค๋ B-Tree ์ธ๋ฑ์ค๊ฐ ์๋
๐ก ๋ฌธ์ ์ ์ฒด์ ๋ํ ๋ถ์๊ณผ ๊ฒ์์ ์ํ ์ธ๋ฑ์ฑ ์๊ณ ๋ฆฌ์ฆ์ ์ ์ฉํ ์ ๋ฌธ ๊ฒ์ ์ธ๋ฑ์ค๋ฅผ ์ฌ์ฉํด์ผ ํ๋ค.
๐ n-gram ์๊ณ ๋ฆฌ์ฆ
n-gram์์ n์ ์ธ๋ฑ์ฑํ ํค์๋์ ์ต์ ๊ธ์ ์๋ฅผ ์๋ฏธํ๊ณ , ์ด ๊ธ์์๋ฅผ ๋จ์๋ก ํค์๋๋ฅผ ์ชผ๊ฐ์ ์ธ๋ฑ์ฑํ๋ ๋ฐฉ์์ด๋ค.
That is the question
์์ ๊ฐ์ ๋ฌธ์ฅ์ด ์์ ๋, 2-gram ์๊ณ ๋ฆฌ์ฆ์ ์ฌ์ฉํ๋ฉด
That | Th | ha | at | ||||
is | is | ||||||
the | th | he | |||||
question | qu | ue | es | st | ti | io | on |
์์ ๊ฐ์ด ๋จ์ด 2๊ฐ๋ก ์ชผ๊ฐ์ด ํ ํฐ์ผ๋ก ๋ง๋ค๊ณ , ๊ฒ์์์ ๊ฐ์น๊ฐ ์๋ ๋จ์ด๋ค์ ํํฐ๋งํด์ ์ ๊ฑฐํ๋ค.
๊ทธ๋ฆฌ๊ณ ๋จ์ ํ ํฐ๋ค์ ์ธ๋ฑ์ค๋ก ์ ์ฅํ๋ค.
๐ ์ ๋ฌธ ๊ฒ์ ์ธ๋ฑ์ค ์ฌ์ฉ ์กฐ๊ฑด
์ ๋ฌธ ๊ฒ์ ์ธ๋ฑ์ค๋ฅผ ์ฌ์ฉํ๊ธฐ ์ํด์๋
SELECT * FROM tb WHERE MATCH(doc_body) AGAINST('์ ํ' IN BOOLEAN MODE);
์์ ๊ฐ์ด MATCH() .. AGAINST() ๋ฌธ๋ฒ์ ์ฌ์ฉํด์ผํ๋ค.
์ ๋ฌธ์ ์ ์ฌ์ฉํ์ง ์์ผ๋ฉด, ํ ํ ์ด๋ธ ์ค์บ์ผ๋ก ์ฟผ๋ฆฌ๊ฐ ์ฒ๋ฆฌ๋ ์ ์๋ค.