Skip to content

이지표 7주차 학습일지

이지표 edited this page Aug 12, 2024 · 3 revisions

UUID로 PK를 사용해도 될까?

조회

UUID로 조회 하기

IDs

user_0000046e-0052-41f5-b8b1-495512d92fa8
user_000006f5-e7f7-44be-8223-04caf899707f
user_000008dc-8501-4424-961f-e8df94d1c152
user_00000958-5bab-4b0c-acb3-2c8084714c0d
user_0000097e-1e30-4e2f-be6f-60b1c71450ff
user_00000cf4-4e59-47e2-b708-d48deeaef096
user_00000e36-4f5f-49fe-ae90-4b87fa82df75
user_00000e45-7a22-488d-9279-8553265e3934
user_00000e64-f1d6-4181-9dbc-cf2be03dabcc
user_00001009-9ccf-4ba4-ba19-a4c216a602d8

쿼리

SELECT * FROM users_uuid WHERE id = {uuid};

결과

  | 시간 -- | -- 1 | 0.00037초 2 | 0.00048초 3 | 0.00032초 4 | 0.00047초 5 | 0.00040초 6 | 0.00045초 7 | 0.00040초 8 | 0.00048초 9 | 0.00038초 10 | 0.00037초

AUTO INCREMENT로 조회하기

IDs

1
15
100
150
10000
15000
1000000
2000000
5000000
9999999

쿼리

SELECT * FROM users_auto_increment WHERE id = {autoincrement};

결과

  시간
1 0.00046초
2 0.00045초
3 0.00034초
4 0.00038초
5 0.00030초
6 0.00039초
7 0.00041초
8 0.00042초
9 0.00042초
10 0.00039초

삽입

UUID로 삽입 하기

쿼리

INSERT INTO users_uuid (id, username, email, created_at) VALUES ('user_6813688e-63a2-4990-bcf7-bede3cb1f387', 'thaddeus.carter', '[email protected]', '2024-08-08 22:26:58.534');
INSERT INTO users_uuid (id, username, email, created_at) VALUES ('user_33cd67d4-93dc-4ad9-aadd-554f36429202', 'creola.fay', '[email protected]', '2024-08-08 22:26:58.553');
INSERT INTO users_uuid (id, username, email, created_at) VALUES ('user_04cecf88-6c23-4e90-a265-f15b817f3e3e', 'laurel.shields', '[email protected]', '2024-08-08 22:26:58.554');
INSERT INTO users_uuid (id, username, email, created_at) VALUES ('user_35f429f6-abf4-4043-a426-41653c3a1b3b', 'wanetta.hoeger', '[email protected]', '2024-08-08 22:26:58.555');
INSERT INTO users_uuid (id, username, email, created_at) VALUES ('user_f92d70be-604e-4add-bf8a-2d9a40142d2f', 'corina.mitchell', '[email protected]', '2024-08-08 22:26:58.555');
INSERT INTO users_uuid (id, username, email, created_at) VALUES ('user_40f2ec16-dff0-4692-8dcb-a2ebda8cc964', 'johnson.abshire', '[email protected]', '2024-08-08 22:26:58.556');
INSERT INTO users_uuid (id, username, email, created_at) VALUES ('user_4d29bcbf-d556-4b99-b72c-fd9147210492', 'stacy.murray', '[email protected]', '2024-08-08 22:26:58.556');
INSERT INTO users_uuid (id, username, email, created_at) VALUES ('user_5aae8f7d-f013-4841-ae79-9b2d05a365ab', 'erich.mayert', '[email protected]', '2024-08-08 22:26:58.557');
INSERT INTO users_uuid (id, username, email, created_at) VALUES ('user_bf066e5a-4de2-474c-ab4f-f63b5faac6f8', 'roderick.bednar', '[email protected]', '2024-08-08 22:26:58.557');
INSERT INTO users_uuid (id, username, email, created_at) VALUES ('user_5771c433-67cc-4542-8907-54384b20ec3d', 'allan.daniel', '[email protected]', '2024-08-08 22:26:58.558');

결과

  시간
1 0.0018초
2 0.00085초
3 0.0011초
4 0.0010초
5 0.00068초
6 0.0010초
7 0.0011초
8 0.00093초
9 0.00068초
10 0.00095초

AUTO INCREMENT로 삽입하기

쿼리

INSERT INTO users_auto_increment (username, email, created_at) VALUES ('wen.baumbach', '[email protected]', '2024-08-08 22:26:58.558');
INSERT INTO users_auto_increment (username, email, created_at) VALUES ('morgan.bernhard', '[email protected]', '2024-08-08 22:26:58.563');
INSERT INTO users_auto_increment (username, email, created_at) VALUES ('antonette.stokes', '[email protected]', '2024-08-08 22:26:58.563');
INSERT INTO users_auto_increment (username, email, created_at) VALUES ('cyndi.ankunding', '[email protected]', '2024-08-08 22:26:58.564');
INSERT INTO users_auto_increment (username, email, created_at) VALUES ('gretchen.bernier', '[email protected]', '2024-08-08 22:26:58.564');
INSERT INTO users_auto_increment (username, email, created_at) VALUES ('cristopher.mraz', '[email protected]', '2024-08-08 22:26:58.565');
INSERT INTO users_auto_increment (username, email, created_at) VALUES ('florentina.boehm', '[email protected]', '2024-08-08 22:26:58.565');
INSERT INTO users_auto_increment (username, email, created_at) VALUES ('monroe.hammes', '[email protected]', '2024-08-08 22:26:58.566');
INSERT INTO users_auto_increment (username, email, created_at) VALUES ('edmund.kreiger', '[email protected]', '2024-08-08 22:26:58.566');
INSERT INTO users_auto_increment (username, email, created_at) VALUES ('iraida.goodwin', '[email protected]', '2024-08-08 22:26:58.567');

결과

  시간
1 0.00055초
2 0.0010초
3 0.00090초
4 0.00078초
5 0.00097초
6 0.00080초
7 0.0086초
8 0.00073초
9 0.00080초
10 0.0010초

count 연산

select count(*) from users_uuid; // 1.1
select count(*) from users_auto_increment; //0.49

참고 자료

찬성파

https://medium.com/@selieshjksofficial/leveraging-uuids-as-primary-keys-in-your-applications-85efcd0163bb

중도파

https://blog.programster.org/mysql-performance-when-using-uuid-for-primary-key

https://tomharrisonjr.com/uuid-or-guid-as-primary-keys-be-careful-7b2aa3dcb439

https://stackoverflow.com/questions/52414414/best-practices-on-primary-key-auto-increment-and-uuid-in-sql-databases

https://planetscale.com/blog/the-problem-with-using-a-uuid-primary-key-in-mysql

반대파

https://dev.to/frederik_vl/why-you-should-never-use-an-uuid-as-the-primary-key-in-sql-databases-147b

👼 개인 활동을 기록합시다.

개인 활동 페이지

🧑‍🧑‍🧒‍🧒 그룹 활동을 기록합시다.

그룹 활동 페이지

🎤 미니 세미나

미니 세미나

🤔 기술 블로그 활동

기술 블로그 활동

📚 도서를 추천해주세요

추천 도서 목록

🎸 기타

기타 유용한 학습 링크

Clone this wiki locally