
๋ฐ์ดํฐ๋ฒ ์ด์ค๋ฅผ ์ด๋ค๋ ๊ฑด ๋จ์ํ ๋ฐ์ดํฐ๋ฅผ ์ ์ฅํ๋ ๊ฒ ์๋๋ค.
์ด๋ป๊ฒ ์ ์ฅํ๊ณ , ์ด๋ป๊ฒ ์ฐพ์ ๊ฒ์ธ๊ฐ๊ฐ ํต์ฌ์ด๋ค.
์ด๋ฒ ๊ธ์์๋
ํ
์ด๋ธ(Table)์ด ์ ํํ ๋ฌด์์ธ์ง,
์ธ๋ฑ์ค(Index)๊ฐ ์ ์ฑ๋ฅ์ ํต์ฌ์ธ์ง,
๊ทธ๋ฆฌ๊ณ ์ค์ ๋ก ์ด๋ป๊ฒ ์ค๊ณํ๊ณ ์ค์ตํด์ผ ํ๋์ง๋ฅผ ๋จ๊ณ๋ณ๋ก ์ ๋ฆฌํ๋ค ๐ฅ
ํ
์ด๋ธ์ ๋ฐ์ดํฐ๋ฒ ์ด์ค์์ ์ค์ ๋ฐ์ดํฐ๊ฐ ์ ์ฅ๋๋ ๋ฌผ๋ฆฌ์ ๋จ์๋ค.
๋ชจ๋ SELECT, INSERT, UPDATE๋ ๊ฒฐ๊ตญ ํ
์ด๋ธ์ ๋์์ผ๋ก ์ํ๋๋ค.
students ํ ์ด๋ธ +------------+--------+------------+ | student_id | name | birthdate | +------------+--------+------------+ | 1 | ๊ฐ๋์ | 1990-01-01 | | 2 | ๊นํ๋ฆฌ | 1992-02-02 | +------------+--------+------------+ ํ (Column) โ ์ธ๋ก ์ด (Row) โ ๊ฐ๋ก
์ค์ํ ๊ฑด ๋ชจ์์ด ์๋๋ผ ๊ท์น์ด ๊ฐ์ ๋๋ค๋ ์ ์ด๋ค.
๊ธฐ๋ณธํค๋ ํ ์ด๋ธ์์ ๊ฐ ํ์ ์ ์ผํ๊ฒ ์๋ณํ๋ ๊ฐ์ด๋ค.
DB๋ ๊ธฐ๋ณธํค๋ฅผ ๊ธฐ์ค์ผ๋ก ๋ฐ์ดํฐ๋ฅผ ์ฐพ๊ณ , ์ฐ๊ฒฐํ๊ณ , ๋ณดํธํ๋ค.
์ธ๋ํค๋ ๋ค๋ฅธ ํ ์ด๋ธ์ ๊ธฐ๋ณธํค๋ฅผ ์ฐธ์กฐํ๋ ์ปฌ๋ผ์ด๋ค.
students enrollments --------- ------------ student_id โโโโ student_id
์ด ๊ตฌ์กฐ ๋๋ถ์ ๋ฐ์ดํฐ ๊ฐ ๊ด๊ณ ๋ฌด๊ฒฐ์ฑ์ด ๋ณด์ฅ๋๋ค.
๐ database
โโ ๐ school_schema
โโ ๐ students
โโ ๐ courses
โโ ๐ enrollments
๋น์ ํ๋ฉด
์คํค๋ง = ์์
ํ์ผ
ํ
์ด๋ธ = ์์
์ํธ
์ธ๋ฑ์ค๋ ํ
์ด๋ธ์ ๋ฐ์ดํฐ๋ฅผ ๋น ๋ฅด๊ฒ ์ฐพ๊ธฐ ์ํ ๋ณด์กฐ ๊ตฌ์กฐ๋ค.
์์ด๋ ๋์์ ํ์ง๋ง, ์์ผ๋ฉด ์๋๊ฐ ์์ ํ ๋ฌ๋ผ์ง๋ค.
[์ธ๋ฑ์ค ์์] 1๋ฒ ํ ํ์ธ โ 2๋ฒ ํ ํ์ธ โ 3๋ฒ ํ ํ์ธ โ ... โ FULL TABLE SCAN [์ธ๋ฑ์ค ์์] "student_id = 123" โ ์ธ๋ฑ์ค์์ ์์น ํ์ธ โ ํด๋น ํ ๋ฐ๋ก ์ ๊ทผ โ
๋ฐ์ดํฐ๊ฐ ์ปค์ง์๋ก ์ด ์ฐจ์ด๋ ์น๋ช ์ ์ด๋ค.
CREATE TABLE students (
student_id INT AUTO_INCREMENT PRIMARY KEY,
name VARCHAR(100) NOT NULL,
birthdate DATE NOT NULL
);
CREATE TABLE courses (
course_id INT AUTO_INCREMENT PRIMARY KEY,
course_name VARCHAR(100) NOT NULL
);
CREATE TABLE enrollments (
enrollment_id INT AUTO_INCREMENT PRIMARY KEY,
student_id INT NOT NULL,
course_id INT NOT NULL,
enrollment_date DATE NOT NULL,
FOREIGN KEY (student_id) REFERENCES students(student_id),
FOREIGN KEY (course_id) REFERENCES courses(course_id)
);
ํต์ฌ์ ์ค๋ณต์ ๊ตฌ์กฐ๋ก ๋ง๋ ๊ฒ์ด๋ค.
CREATE INDEX idx_students_name ON students(name);
CREATE INDEX idx_enroll_student ON enrollments(student_id);
CREATE INDEX idx_enroll_date ON enrollments(enrollment_date);
CREATE INDEX idx_student_course ON enrollments(student_id, course_id);
(student_id, course_id)๋
๋์์ ์กฐ๊ฑด์ผ๋ก ์์ฃผ ์ฐ์ด๊ธฐ ๋๋ฌธ์ด๋ค.
WHERE student_id = 1
AND course_id = 3
๊ทธ๋์ ์ธ๋ฑ์ค๋ ๋ง์ด ์กฐํ๋๊ณ , ์์ฃผ ์กฐ๊ฑด์ ์ฐ์ด๋ ์ปฌ๋ผ์๋ง ๊ฑด๋ค.