✅ 기존 10,000 건의 헬스장 데이터 → 100,000 건으로 확장
BEGIN
DECLARE i INT DEFAULT 10003;
START TRANSACTION;
WHILE i <= 100000 DO
INSERT INTO gym (latitude, longitude, location, name)
VALUES (1234.1234, 1234.1234, "xx시 xx구", CONCAT(UUID(), "헬스장"));
SET i = i+1;
END WHILE;
COMMIT;
END
✅ 기존 100,00 건의 모집글 데이터 → 1,000,000 건으로 확장 (랜덤 날짜 반영)
기존에는 날짜 종류가 6개 밖에 없었지만 프로시저에서 제공하는 기능을 활용하여 날짜 범위 사이의 난수 날짜 데이터 생성하여 현실성 반영
BEGIN
DECLARE i INT DEFAULT 1;
DECLARE j INT DEFAULT 1;
SET @start_datetime = '2023-05-01 00:00:00'; -- 시작 날짜
SET @end_datetime = '2023-12-31 00:00:00'; -- 종료 날짜
START TRANSACTION;
WHILE i <= 166667 DO
WHILE j <= 6 DO
SET @start_timestamp = UNIX_TIMESTAMP(@start_datetime);
SET @end_timestamp = UNIX_TIMESTAMP(@end_datetime);
SET @random_timestamp = FLOOR(@start_timestamp + RAND() * (@end_timestamp - @start_timestamp));
SET @random_datetime = FROM_UNIXTIME(@random_timestamp);
IF j = 1 THEN
INSERT INTO recruitment (is_deleted, prefer_gender, status, started_at, title, workout_part, gym_id, member_id)
VALUES ("N", "MALE", "RECRUITING", @random_datetime, UUID(), "ALL", FLOOR(RAND() * 1000) + 1, i);
ELSEIF j = 2 THEN
INSERT INTO recruitment (is_deleted, prefer_gender, status, started_at, title, workout_part, gym_id, member_id)
VALUES ("N", "FEMALE", "COMPLETE", @random_datetime, UUID(), "CHEST", FLOOR(RAND() * 100000) + 1, i);
ELSEIF j = 3 THEN
INSERT INTO recruitment (is_deleted, prefer_gender, status, started_at, title, workout_part, gym_id, member_id)
VALUES ("N", "MALE", "RECRUITING", @random_datetime, UUID(), "BACK", FLOOR(RAND() * 100000) + 1, i);
ELSEIF j = 4 THEN
INSERT INTO recruitment (is_deleted, prefer_gender, status, started_at, title, workout_part, gym_id, member_id)
VALUES ("N", "BOTH", "EXPIRATION", @random_datetime, UUID(), "SHOULDER", FLOOR(RAND() * 100000) + 1, i);
ELSEIF j = 5 THEN
INSERT INTO recruitment (is_deleted, prefer_gender, status, started_at, title, workout_part, gym_id, member_id)
VALUES ("N", "MALE", "RECRUITING", @random_datetime, UUID(), "LOWER", FLOOR(RAND() * 100000) + 1, i);
ELSE
INSERT INTO recruitment (is_deleted, prefer_gender, status, started_at, title, workout_part, gym_id, member_id)
VALUES ("N", "FEMALE", "COMPLETE", @random_datetime, UUID(), "CORE", FLOOR(RAND() * 100000) + 1, i);
END IF;
SET j = j+1;
END WHILE;
SET j = 1;
SET i = i+1;
END WHILE;
COMMIT;
END
생성된 데이터를 보면 날자와 헬스장 외래키가 랜덤으로 생성된 것을 확인할 수 있다.