검색 조건을 반영하기 위하여 더미데이터 추가 생성


✅ 기존 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

Untitled

✅ 기존 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

생성된 데이터를 보면 날자와 헬스장 외래키가 랜덤으로 생성된 것을 확인할 수 있다.

Untitled

Untitled

조회 성능 탐색 순서