실습 스키마
CREATE TABLE Employees (
EmployeeID INT PRIMARY KEY AUTO_INCREMENT,
Name VARCHAR(100),
Department VARCHAR(50),
Salary DECIMAL(10, 2)
);
-- 대량의 데이터를 삽입하는 반복 스크립트
DELIMITER $$
CREATE PROCEDURE InsertEmployees()
BEGIN
DECLARE i INT DEFAULT 1;
-- 반복문으로 데이터 100만개 삽입
WHILE i <= 1000 DO
INSERT INTO Employees (Name, Department, Salary)
SELECT
CONCAT('Employee', FLOOR(RAND() * 1000000)), -- 랜덤한 이름
CASE FLOOR(RAND() * 5) + 1 -- 랜덤 부서
WHEN 1 THEN 'HR'
WHEN 2 THEN 'Engineering'
WHEN 3 THEN 'Sales'
WHEN 4 THEN 'Marketing'
WHEN 5 THEN 'Support'
END,
FLOOR(RAND() * 90000 + 30000) -- 랜덤 연봉 (30000 ~ 120000)
FROM
dual
LIMIT 1000;
-- 배치를 처리하고 다음으로 넘어감
SET i = i + 1;
END WHILE;
END $$
DELIMITER ;
-- 프로시저 삭제
DROP PROCEDURE InsertEmployees;
-- 프로시저 실행
CALL InsertEmployees();
SELECT * FROM Employees WHERE Name = 'Employee12345';
EXPLAIN SELECT * FROM Employees WHERE Name = 'Employee12345';
CREATE INDEX idx_name ON Employees (Name);
CREATE INDEX idx_department ON Employees (Department);
CREATE INDEX idx_name_department ON Employees (Name, Department);
drop index idx_name on Employees;
drop index idx_department on Employees;
drop index idx_name_department on Employees;
Last updated