DB์์ ๋ฐ์ดํฐ(ํํ)์ ์กฐํํ ๋ full scan์ผ๋ก ์งํํ๋ฉด ์ฒ์๋ถํฐ ๋๊น์ง DB๋ฅผ ๋ค ํ์ด์ผํด์ (๋ฐ์ดํฐ๊ฐ ๋ง์๊ฒฝ์ฐ) ์๊ฐ์ด ์ค๋๊ฑธ๋ฆด ์ ์๋ค. ๊ทธ๋ด๋ ์ฌ์ฉ๋๋๊ฒ ์ธ๋ฑ์ฑ์ด๋ค.
mysql์ ๊ธฐ์ค์ผ๋ก ์ค๋ช
ํ์๋ฉด ์ด์งํ์ํธ๋ฆฌ ๊ธฐ๋ฒ์ ์ฌ์ฉํ๋ค.
์ด์งํ์ํธ๋ฆฌ ๊ธฐ๋ฒ์ด๋?
์ธ๋ฑ์ฑ์ ์ ์ฉํ๊ฒ ๋๋ฉด ๋ด๊ฐ ์ธ๋ฑ์ฑ์ ์ํ๋ ์์ฑ(attribute)๊ณผ ํฌ์ธํฐ๋ฅผ ๊ฐ์ ธ์์ ์๋ก์ด ํ
์ด๋ธ์ ๋ง๋ ๋ค.
(์์ฑ(attribute)์ ๋ด๋ฆผ์ฐจ์ ๋ ฌ์ด ๋ ์ํ๋ก ํ
์ด๋ธ์ด ์์ฑ๋จ)
(ํฌ์ธํฐ๋ ์๋ ๋ฐ์ดํฐ๊ฐ ์ ์ฅ๋ ํ
์ด๋ธ์ ์ฃผ์)
1) ๊ทธ๋ ๊ฒ ์ ๋ ฌ๋ ์์ฑ์์ ์ ๋ฐ์์น์ ์๋ ๊ฐ
๊ณผ ๋ด๊ฐ ์ฐพ๋ ๊ฐ
๊ณผ ๋น๊ตํ๋ค.
2) ์ ๋ฐ์์น์ ์๋ ๊ฐ
์ด ๋ด๊ฐ ์ฐพ๋ ๊ฐ
๋ณด๋ค ์๋ค๋ฉด ์๋๋ ๋์ด์ ๋ด๊ฐ ์ฐพ๋ ๊ฐ์ด ์์ผ๋ ๊ทธ๋ฅ ๋ฌด์ํ๊ณ , ๋ด๊ฐ ์ฐพ๋ ๊ฐ
๋ณด๋ค ํฐ ๊ฐ ์ค์์ ์ฐพ๋๋ค.
3) ์ด๋ฒ์๋ ํฐ ๊ฐ๋ค ์ค ์ ๋ฐ ์์น์ ์๋ ๊ฐ
์ ์ฐพ์ ๋ด๊ฐ ์ฐพ๋ ๊ฐ
์ ๋น๊ตํ์ฌ ์ฐพ๋๋ค.
4) ์ด๋ฐ ์์ผ๋ก ๊ณ์ ๋ฐ๋ณตํ์ฌ ๋ด๊ฐ ์ฐพ๋ ๊ฐ
์ ์ฐพ๊ฒ๋๋ฉด ํฌ์ธํฐ๋ฅผ ์ด์ฉํด์ ์๋ ํ
์ด๋ธ๋ก ๊ฐ์ ์ ๋ณด๋ฅผ ๋ฐํํ๋ค.
์ด์งํ์๊ธฐ๋ฒ์ ๋ํด์ ์๊ฒ ์ผ๋, ๊ทธ๋ผ mysql์์ ์ด๋ป๊ฒ ํด์ผ index๋ฅผ ์์ฑํ ์ ์์๊น?
์ค๋ณตํ์ฉ
CREATE INDEX ์ธ๋ฑ์ค ์ด๋ฆ ON ํ ์ด๋ธ(์ด๋ค attribute); -- ์์ (showsํ ์ด๋ธ์ ์๋ price๋ผ๋ attribute๋ก showPrice๋ผ๋ ์ธ๋ฑ์ค๋ฅผ ๋ง๋ค๊ฑฐ์ผ) CREATE INDEX showPrice ON Shows(price);
์ค๋ณต ๋นํ์ฉ
CREATE UNIQUE INDEX ์ธ๋ฑ์ค ์ด๋ฆ ON ํ
์ด๋ธ(์ด๋ค attribute);
### 2) ํ
์ด๋ธ์ ์๋ก ๋ง๋ค๋ ์ธ๋ฑ์ค ๊ฑธ์ด์ฃผ๊ธฐ
>```sql
CREATE TABLE shows (
id INT PRIMARY KEY,
showName VARCHAR(20) NOT NULL,
price INT,
location VARCHAR(20),
INDEX showPrice (price),
);```
<br><br>
## ๐ฌ ํ
์ด๋ธ์ ์ธ๋ฑ์ค๊ฐ ์ค์ ์ด ๋์ด์๋์ง ํ์ธ
>```sql
SHOW INDEX FROM shows;
-- ์์ EXPLAIN๋ง ๋ถ์ด๋ฉด ๋๋ค. EXPLAIN SELECT * FROM shows WHERE price = 90000;
์ธ๋ฑ์ค๋ฅผ ์ ์ฉํด์ฃผ๊ณ ์ฌ์ฉํ๋ฉด sql์ ์๋ optimizer๊ฐ ์์์ ์ธ๋ฑ์ค๋ฅผ ์ ์ฉํ๋ค. ์์์ํ๋ค๊ฐ ๋ด๊ฐ ์ํ๋ ์ธ๋ฑ์ค๋ฅผ ์ฌ์ฉํ๊ฒ ํ๊ณ ์ถ์ ์ ์๋ค.
๊ทธ๋ด๋ ์๋์ ๊ฐ์ด ๋ช ๋ น๋ฌธ์ ์์ฑํ๋ฉด ๋๋ค.
--๊ถ์ฅ๋๋์ผ๋ก ์ธ๋ฑ์ค ์ค์ SELECT * FROM shows USE INDEX(์ธ๋ฑ์ค ์ด๋ฆ)WHERE price= 90000; --์ด๊ฑธ ์ฌ์ฉํด!์ ๋๋์ ์ค์ SELECT * FROM shows FORCE INDEX(์ธ๋ฑ์ค ์ด๋ฆ)WHERE price = 90000;
์ด๋ ๊ฒ ๋ช ์์ ์ผ๋ก ์ ์ํด์คฌ์์๋ ์ํ๋ ๋ฐ์ดํฐ๋ฅผ ๊ฐ์ ธ์ค์ง ๋ชปํ๋ค๊ณ optimizer๊ฐ ํ๋จํ๋ฉด full scan์ ํ๊ฒ๋๋ค.
์ธ๋ฑ์ค๋ฅผ ์ญ์ ํ๊ณ ์ถ์๋ ์๋์ ์ฟผ๋ฆฌ๋ฅผ ์คํํด์ฃผ๋ฉด ๋๋ค.
ALTER TABLE ํ
์ด๋ธ ์ด๋ฆ DROP INDEX ์ธํ
์ค ์ด๋ฆ;
--์์
ALTER TABLE show DROP INDEX showPrice;
[์ฐธ๊ณ ์๋ฃ - ์์] https://www.youtube.com/watch?v=IMDH4iAQ6zM