ABOUT ME

-

Today
-
Yesterday
-
Total
-
  • MySQL partitioning의 기록 (22.11~22.12 HospitAl Talk 프로젝트)
    MySQL 2022. 12. 19. 20:46

    아래의 리스트 파티션은 이후 데이터셋을 교체하고 좌표정보를 사용하게 되면서 사용하지 않게 되었다.

    구별로만 병원을 찾아오는 것이, 사용자 위치기반 서비스에 온전히 들어맞지 않기 때문. (즉, 구별로 찾는 것이 아니라 각 병원마다 사용자 위치정보를 기반하여 거리계산을 해야 한다는 뜻.)


    UPDATE Hospitals SET province = 0 WHERE hospitalId < 3317;
    UPDATE Hospitals SET province = 1 WHERE hospitalId BETWEEN 3317 AND 4447;
    UPDATE Hospitals SET province = 2 WHERE hospitalId BETWEEN 4448 AND 5084;
    UPDATE Hospitals SET province = 3 WHERE hospitalId BETWEEN 5085 AND 6274;
    UPDATE Hospitals SET province = 4 WHERE hospitalId BETWEEN 6275 AND 7218;
    UPDATE Hospitals SET province = 5 WHERE hospitalId BETWEEN 7219 AND 7941;
    UPDATE Hospitals SET province = 6 WHERE hospitalId BETWEEN 7942 AND 8739;
    UPDATE Hospitals SET province = 7 WHERE hospitalId BETWEEN 8740 AND 9233;
    UPDATE Hospitals SET province = 8 WHERE hospitalId BETWEEN 9234 AND 10225;
    UPDATE Hospitals SET province = 9 WHERE hospitalId BETWEEN 10226 AND 10723;
    UPDATE Hospitals SET province = 10 WHERE hospitalId BETWEEN 10724 AND 11610;
    UPDATE Hospitals SET province = 11 WHERE hospitalId BETWEEN 11611 AND 12404;
    UPDATE Hospitals SET province = 12 WHERE hospitalId BETWEEN 12405 AND 13378;
    UPDATE Hospitals SET province = 13 WHERE hospitalId BETWEEN 13379 AND 13973;
    UPDATE Hospitals SET province = 14 WHERE hospitalId BETWEEN 13974 AND 15584;
    UPDATE Hospitals SET province = 15 WHERE hospitalId BETWEEN 15585 AND 16207;
    UPDATE Hospitals SET province = 16 WHERE hospitalId BETWEEN 16208 AND 16950;
    UPDATE Hospitals SET province = 17 WHERE hospitalId BETWEEN 16951 AND 18595;
    UPDATE Hospitals SET province = 18 WHERE hospitalId BETWEEN 18596 AND 19449;
    UPDATE Hospitals SET province = 19 WHERE hospitalId BETWEEN 19450 AND 20508;
    UPDATE Hospitals SET province = 20 WHERE hospitalId BETWEEN 20509 AND 20962;
    UPDATE Hospitals SET province = 21 WHERE hospitalId BETWEEN 20963 AND 21895;
    UPDATE Hospitals SET province = 22 WHERE hospitalId BETWEEN 21896 AND 22565;
    UPDATE Hospitals SET province = 23 WHERE hospitalId BETWEEN 22566 AND 23296;
    UPDATE Hospitals SET province = 24 WHERE hospitalId BETWEEN 23297 AND 24021;

     

    • 파티션을 나누기 위한 프라이머리 키 설정.
      ALTER TABLE hh99.Hospitals DROP primary key,
      ADD CONSTRAINT Hospitals_PK PRIMARY KEY (hospitalId,hospitalCode,province);

     

    • 자치구 별로 list partion 나누기. (0은 강남구 …. 24는 중랑구. 프로젝트의 자치구 배열 참고.)
    ALTER TABLE Hospitals PARTITION BY LIST (province)(
    partition p0 VALUES IN (0),
    partition p1 VALUES IN (1),
    partition p2 VALUES IN (2),
    partition p3 VALUES IN (3),
    partition p4 VALUES IN (4),
    partition p5 VALUES IN (5),
    partition p6 VALUES IN (6),
    partition p7 VALUES IN (7),
    partition p8 VALUES IN (8),
    partition p9 VALUES IN (9),
    partition p10 VALUES IN (10),
    partition p11 VALUES IN (11),
    partition p12 VALUES IN (12),
    partition p13 VALUES IN (13),
    partition p14 VALUES IN (14),
    partition p15 VALUES IN (15),
    partition p16 VALUES IN (16),
    partition p17 VALUES IN (17),
    partition p18 VALUES IN (18),
    partition p19 VALUES IN (19),
    partition p20 VALUES IN (20),
    partition p21 VALUES IN (21),
    partition p22 VALUES IN (22),
    partition p23 VALUES IN (23),
    partition p24 VALUES IN (24)
    );
Designed by Tistory.