EEALL@ONCE
๐ ์ธ๋ฑ์ค ๋ณธ๋ฌธ
์ธ๋ฑ์ค๋ฅผ ๋ง๋๋ ์ด์ ?
์ธ๋ฑ์ค๋ฅผ ์ค์ ํ๋ ๊ฒ์ ๋ฐ์ดํฐ๋ฒ ์ด์ค ์ฑ๋ฅ๊ณผ ์ฟผ๋ฆฌ ์ฒ๋ฆฌ ์๋๋ฅผ ํฅ์์ํค๋๋ฐ ๋์์ด ๋ฉ๋๋ค. ์ธ๋ฑ์ค์ ์ค์ ์ ๋ฐ์ดํฐ๋ฒ ์ด์ค ํ ์ด๋ธ์ ํน์ ์ด(์นผ๋ผ)์ ๋ํด ๋น ๋ฅธ ๊ฒ์ ๋ฐ ์ ๋ ฌ ์์ ์ ๊ฐ๋ฅํ๊ฒ ํฉ๋๋ค.
- ๋น ๋ฅธ ๊ฒ์ ์๋: ์ธ๋ฑ์ค๋ฅผ ์ฌ์ฉํ๋ฉด ํ ์ด๋ธ์ ๋ฐ์ดํฐ๋ฅผ ์์ฐจ์ ์ผ๋ก ๊ฒ์ํ๋ ๊ฒ์ด ์๋๋ผ ์ธ๋ฑ์ค ํธ๋ฆฌ๋ฅผ ์ด์ฉํ์ฌ ๋น ๋ฅด๊ฒ ์ํ๋ ๋ฐ์ดํฐ๋ฅผ ์ฐพ์ ์ ์์ต๋๋ค. ์ธ๋ฑ์ค๊ฐ ์๋ ์ด์ ์ฌ์ฉํ ๊ฒ์์ ์ ํ ๊ฒ์๋ณด๋ค ํจ์ฌ ๋น ๋ฅด๋ฉฐ, ๋๋์ ๋ฐ์ดํฐ์์๋ ํจ์จ์ ์ผ๋ก ๊ฒฐ๊ณผ๋ฅผ ๊ฐ์ ธ์ฌ ์ ์์ต๋๋ค.
- ์ ๋ ฌ ์๋ ํฅ์: ์ธ๋ฑ์ค๋ฅผ ์ฌ์ฉํ๋ฉด ์ ๋ ฌ ์์ ๋ ํจ์ฌ ๋น ๋ฆ ๋๋ค. ์ธ๋ฑ์ค๊ฐ ์๋ ์ด์ ๊ธฐ์ค์ผ๋ก ๋ฐ์ดํฐ๋ฅผ ์ ๋ ฌํ๋ฉด ์ ๋ ฌ ์๊ณ ๋ฆฌ์ฆ์ ์ํด ๋ฐ์ดํฐ๋ฅผ ๋น๊ตํ๋ ํ์๊ฐ ์ค์ด๋ค์ด ๋ ๋น ๋ฅธ ์ ๋ ฌ์ด ๊ฐ๋ฅํฉ๋๋ค.
- ์กฐ์ธ ์ฑ๋ฅ ํฅ์: ๋ ๊ฐ ์ด์์ ํ ์ด๋ธ์ ์กฐ์ธํ ๋, ์ธ๋ฑ์ค๊ฐ ์๋ ์ด์ ๊ธฐ์ค์ผ๋ก ์กฐ์ธํ๋ฉด ํจ์จ์ ์ธ ์กฐ์ธ์ด ์ด๋ฃจ์ด์ง๋๋ค. ์ธ๋ฑ์ค๋ฅผ ์ฌ์ฉํ์ฌ ์กฐ์ธ์ ํ๋ฉด ๋ฐ์ดํฐ๋ฒ ์ด์ค๊ฐ ๋ ๋น ๋ฅด๊ฒ ๊ด๋ จ ๋ฐ์ดํฐ๋ฅผ ๊ฒฐํฉํ ์ ์์ต๋๋ค.
- ์ค๋ณต ์ ๊ฑฐ ๋ฐ ๊ณ ์ ์ฑ ๋ณด์ฅ: UNIQUE INDEX๋ฅผ ์ฌ์ฉํ์ฌ ํน์ ์ด์ ๊ณ ์ ์ฑ์ ๋ณด์ฅํ ์ ์์ต๋๋ค. ์ด๋ฅผ ํตํด ์ค๋ณต๋ ๋ฐ์ดํฐ๋ฅผ ๋ฐฉ์งํ๊ณ ๋ฐ์ดํฐ ์ ํฉ์ฑ์ ์ ์งํ ์ ์์ต๋๋ค.
- ํ ์ด๋ธ ํฌ๊ธฐ ์ต์ ํ: ์ธ๋ฑ์ค๋ ๋ฐ์ดํฐ๋ฒ ์ด์ค ํ ์ด๋ธ์ ํฌ๊ธฐ๋ฅผ ์ต์ ํํ๋๋ฐ ๋์์ด ๋ฉ๋๋ค. ์ธ๋ฑ์ค๋ฅผ ์ฌ์ฉํ๋ฉด ๋ฐ์ดํฐ๋ฅผ ํจ์จ์ ์ผ๋ก ์ ์ฅํ ์ ์์ผ๋ฉฐ, ๋ฐ๋ผ์ ๋์คํฌ ๊ณต๊ฐ์ ์ ์ฝํ ์ ์์ต๋๋ค.
ํ์ง๋ง ์ธ๋ฑ์ค๋ฅผ ์ฌ์ฉํ ๋์๋ ์ฃผ์ํด์ผ ํ ์ ์ด ์์ต๋๋ค. ์ธ๋ฑ์ค๋ฅผ ๋๋ฌด ๋ง์ด ์์ฑํ๋ฉด ์ฐ๊ธฐ ์์ (INSERT, UPDATE, DELETE)์ ์ฑ๋ฅ์ด ์ ํ๋ ์ ์์ต๋๋ค. ๋ํ, ์ธ๋ฑ์ค๋ ์ด์ ๋ฐ์ดํฐ๊ฐ ์์ฃผ ๋ณ๊ฒฝ๋๋ ๊ฒฝ์ฐ์๋ ์ฑ๋ฅ์ ์ํฅ์ ๋ฏธ์น ์ ์์ต๋๋ค. ๋ฐ๋ผ์ ์ธ๋ฑ์ค๋ฅผ ์ค์ ํ ๋์๋ ๋ฐ์ดํฐ๋ฒ ์ด์ค์ ํน์ฑ๊ณผ ์ฟผ๋ฆฌ ํจํด์ ๊ณ ๋ คํ์ฌ ์ ์ ํ๊ฒ ์ ํํด์ผ ํฉ๋๋ค.
์ธ๋ฑ์ค ์์ฑ
CREATE INDEX index_name ON table_name (column_name);
- index_name: ์์ฑํ ์ธ๋ฑ์ค์ ์ด๋ฆ์ ์ง์ / ์ธ๋ฑ์ค ์ด๋ฆ์ ๋ฐ์ดํฐ๋ฒ ์ด์ค ๋ด์์ ๊ณ ์ ํด์ผํ๋ค!
- table_name: INDEX๋ฅผ ์์ฑํ ํ ์ด๋ธ์ ์ด๋ฆ์ ์ง์
- column_name: INDEX๋ฅผ ์์ฑํ ์ด(์นผ๋ผ)์ ์ด๋ฆ์ ์ง์ / ํด๋น ์ด์ ๊ฐ์ ๊ธฐ์ค์ผ๋ก ์ธ๋ฑ์ค๊ฐ ์์ฑ๋จ
CREATE UNIQUE INDEX unique_index_name ON table_name (column_name);
UNIQUE ํค์๋๋ ํด๋น INDEX์ ๊ฐ์ด ๊ณ ์ ํด์ผ ํจ์ ์๋ฏธ
์ฆ, ์ค๋ณต๋ ๊ฐ์ด INDEX์ ์ ์ฅ๋์ง ์์!
์ธ๋ฑ์ค ์ญ์
DROP INDEX index_name ON table_name;
- index_name: ์ญ์ ํ ์ธ๋ฑ์ค์ ์ด๋ฆ์ ์ง์ / ์์ฑ๋ INDEX์ ์ด๋ฆ๊ณผ ๋์ผํด์ผ ํฉ๋๋ค.
- table_name: INDEX๊ฐ ์ญ์ ๋ ํ
์ด๋ธ์ ์ด๋ฆ์ ์ง์
ํ ์ด๋ธ์ ๋ง๋๋ ์๊ฐ์๋ ์ธ๋ฑ์ค ์ค์ ์ ๊ฐ๋ฅํ๋ค!
ํ ์ด๋ธ ์์ฑ ์ ์ธ๋ฑ์ค ์ค์
INDEX ์ธ๋ฑ์ค์ด๋ฆ(์ธ๋ฑ์ค ์ปฌ๋ผ)
<์์ >
CREATE TABLE Customers (
customer_id INT AUTO_INCREMENT PRIMARY KEY,
name VARCHAR(50),
email VARCHAR(100),
INDEX idx_customers_email (email)
);
๋ฌผ๋ก ์ฌ๋ฌ ์ปฌ๋ผ์ ํ๋์ ์ธ๋ฑ์ค๋ก ๋ง๋ค ์๋ ์๋ค.
๋ค์ค ์ด ์ธ๋ฑ์ค
CREATE INDEX idx_multi_columns ON table_name (column1, column2);
<์์ >
CREATE INDEX idx_multi_columns ON Products (category, manufacturer, stock_quantity);
์ธ๋ฑ์ค๋ฅผ ๋๋ฌด ๋ง์ด ์์ฑํ๋ฉด ์ฐ๊ธฐ ์์ (INSERT, UPDATE, DELETE)์ ์ฑ๋ฅ์ด ์ ํ๋ ์ ์์ต๋๋ค.
๊ฒฐ๊ตญ ๊ฐ๋ฐ์ ํ๋ค๋ณด๋ฉด, ์ ๋ณด๋ฅผ INSERT,UPDATE,DELETE ํด์ผํ ์ํฉ์ด ์๊ธธํ ๋ฐ, ๊ทธ๋๋ ์ธ๋ฑ์ค ํ์ฑํ ๋นํ์ฑํ๋ฅผ ์ฌ์ฉํ์
์ธ๋ฑ์ค๋ฅผ ํ์ฑํ(ENABLE) ๋๋ ๋นํ์ฑํ(DISABLE)
์ธ๋ฑ์ค ํ์ฑํ (ENABLE):
ALTER TABLE table_name ENABLE KEYS;
์ธ๋ฑ์ค ๋นํ์ฑํ (DISABLE):
ALTER TABLE table_name DISABLE KEYS;
์ธ๋ฑ์ค๋ฅผ ๋นํ์ฑํํ๋ ์ํฉ์ ์ผ์์ ์ผ๋ก ์ธ๋ฑ์ค๋ฅผ ๊ฑด๋๋ฐ๊ณ ๋๋์ ๋ฐ์ดํฐ๋ฅผ ํ ๋ฒ์ ์ฝ์ (INSERT)ํ๊ฑฐ๋ ์ ๋ฐ์ดํธ(UPDATE)ํ๋ ๊ฒฝ์ฐ์ ์ ์ฉ! ๋ค๋ง, ์ธ๋ฑ์ค๋ฅผ ๋นํ์ฑํํ๋ ๋์์๋ ๊ฒ์ ์์ (SELECT)์ ์ฑ๋ฅ์ด ์ ํ๋ ๊ฒ...
์ฐธ๊ณ ๋ก BTREE๋ผ๋ ๊ฒ๋ ์๋๋ฐ... ์ค๋ช ์ฐธ๊ณ ํ์..
BTREE
INDEX `์ธ๋ฑ์ค๋ช ` (`์ปฌ๋ผ1`, `์ปฌ๋ผ2`) USING BTREE
BTREE๋ ๋ฐ์ดํฐ๋ฒ ์ด์ค์์ ์ธ๋ฑ์ค๋ฅผ ๋ง๋ค ๋ ์ฌ์ฉ๋๋ ์ผ๋ฐ์ ์ธ ์๊ณ ๋ฆฌ์ฆ ์ค ํ๋์ ๋๋ค. BTREE ์ธ๋ฑ์ค๋ ์ฃผ๋ก ๋น ๋ฅธ ๊ฒ์๊ณผ ์ ๋ ฌ์ ์ํด ์ฌ์ฉ๋๋ฉฐ, ๋๋ถ๋ถ์ ๊ด๊ณํ ๋ฐ์ดํฐ๋ฒ ์ด์ค ๊ด๋ฆฌ ์์คํ (RDBMS)์์ ์ง์๋ฉ๋๋ค.
BTREE ์ธ๋ฑ์ค๋ ์ด์ง ํธ๋ฆฌ(Binary Tree)๋ฅผ ๊ธฐ๋ฐ์ผ๋ก ํฉ๋๋ค. ์ด์ง ํธ๋ฆฌ๋ ๊ฐ ๋ ธ๋๊ฐ ์ต๋ ๋ ๊ฐ์ ์์ ๋ ธ๋๋ฅผ ๊ฐ๋ ํธ๋ฆฌ ํํ์ ์๋ฃ ๊ตฌ์กฐ๋ก, ์ธ๋ฑ์ค๋ฅผ ๊ตฌ์ฑํ๋ ๋ฐ ํจ๊ณผ์ ์ธ ๋ฐฉ๋ฒ์ ๋๋ค. BTREE ์ธ๋ฑ์ค๋ ๋ฐ์ดํฐ๋ฒ ์ด์ค์ ๊ฐ ๋ ์ฝ๋๋ฅผ ํจ์จ์ ์ผ๋ก ๋ถ๋ฅํ๊ณ ๊ฒ์ํ ์ ์๋๋ก ํฉ๋๋ค.
์ธ๋ฑ์ค๋ฅผ ์์ฑํ ๋ BTREE๋ฅผ ์ฌ์ฉํ๋ฉด, ์ธ๋ฑ์ค๋ฅผ ๊ตฌ์ฑํ๋ ์ด๋ค์ ๊ฐ์ ์ด์ง ํธ๋ฆฌ ๊ตฌ์กฐ๋ก ์ ๋ ฌํ์ฌ ๋น ๋ฅธ ๊ฒ์์ด ๊ฐ๋ฅํด์ง๋๋ค. ์ฟผ๋ฆฌ๊ฐ ์ธ๋ฑ์ค ์ด์ ์ฌ์ฉํ์ฌ ๋ฐ์ดํฐ๋ฅผ ๊ฒ์ํ ๋, BTREE ์ธ๋ฑ์ค๋ ์ด์ง ๊ฒ์(Binary Search)์ ์ฌ์ฉํ์ฌ ํจ์จ์ ์ผ๋ก ์ํ๋ ๊ฒฐ๊ณผ๋ฅผ ์ฐพ์๋ ๋๋ค.
BTREE ์ธ๋ฑ์ค๋ ๋ค์ํ ๋ฐ์ดํฐ๋ฒ ์ด์ค ์ฟผ๋ฆฌ์์ ์ฑ๋ฅ ํฅ์์ ์ ๊ณตํ๋ฉฐ, ํนํ ๋๋์ ๋ฐ์ดํฐ๊ฐ ์๋ ํ ์ด๋ธ์์ ๊ฒ์ ์๋๋ฅผ ๋์ด๋ ๋ฐ ๋์์ด ๋ฉ๋๋ค. ํ์ง๋ง ์ธ๋ฑ์ค๋ฅผ ์์ฑํ๋ฉด ๋ฐ์ดํฐ ์ถ๊ฐ, ์์ , ์ญ์ ์์ ์ธ๋ฑ์ค๋ฅผ ์ ๋ฐ์ดํธํด์ผ ํ๋ฏ๋ก ๋ฐ์ดํฐ ๋ณ๊ฒฝ์ด ์์ฃผ ๋ฐ์ํ๋ ํ ์ด๋ธ์๋ ์ ์ ํ ๊ณ ๋ ค๊ฐ ํ์ํฉ๋๋ค.
์ข ํฉ์ ์ผ๋ก, BTREE ์ธ๋ฑ์ค๋ ๋ฐ์ดํฐ๋ฒ ์ด์ค์์ ์์ฃผ ์ฌ์ฉ๋๋ ์ธ๋ฑ์ค ์๊ณ ๋ฆฌ์ฆ ์ค ํ๋๋ก, ๋น ๋ฅธ ๊ฒ์๊ณผ ์ ๋ ฌ์ ์ง์ํ์ฌ ๋ฐ์ดํฐ๋ฒ ์ด์ค์ ์ฑ๋ฅ์ ํฅ์์ํค๋ ๋ฐ ๊ธฐ์ฌํฉ๋๋ค.
'Data๐ > DB ์ดํด' ์นดํ ๊ณ ๋ฆฌ์ ๋ค๋ฅธ ๊ธ
๐ DAYOFWEEK (0) | 2023.07.28 |
---|---|
๐ GROUP BY (0) | 2023.07.28 |
๐ IFNULL (0) | 2023.07.28 |
๐ํ ์ด๋ธ ์ ๋ฐ์ดํฐ ์ญ์ ํ๊ธฐ (0) | 2023.07.21 |
๐์๋ธ์ฟผ๋ฆฌ(subquery) (0) | 2023.07.06 |