mb_id 대신에 mb_no 사용하면 속도 차이가 있을까요?

mb_id 대신에 mb_no 사용하면 속도 차이가 있을까요?

QA

mb_id 대신에 mb_no 사용하면 속도 차이가 있을까요?

답변 3

본문

현재 mb_id 값을 이메일로 사용하고 있습니다.

그러다보니 20자리 넘는 id가 꽤 많더라구요.

 

혹시 쿼리문 돌릴 때 mb_id 대신에숫자로만 이루어진 mb_no 값을 사용하면 유의미한 속도 차이가 있을까요?

 

이 질문에 댓글 쓰기 :

답변 3

네, 유의미한 속도 차이가 날 가능성이 높습니다.

이유를 단계별로 설명드리면요.


1. 문자열 PK vs 숫자 PK 성능 차이

  • 문자열(VARCHAR, 특히 이메일처럼 길이가 길고 가변적)로 mb_id를 PK나 JOIN 조건에 쓰면,

    • 비교할 때 문자 단위로 일일이 비교해야 해서 CPU 연산량이 많아집니다.

    • 인덱스 크기가 커져서 디스크/메모리에서 읽어야 하는 양이 늘어납니다.

  • 숫자(INT, BIGINT)로 mb_no를 PK나 JOIN 조건에 쓰면,

    • 비교 연산이 훨씬 단순하고 빠릅니다 (정수 비교는 CPU 한 번에 끝남).

    • 인덱스 크기도 작아져서 더 많은 데이터가 메모리에 캐싱됩니다.


2. 실제 인덱스 크기 비교 예시

  • VARCHAR(50) (UTF-8 기준, 이메일 최대 50자)

    • 인덱스 엔트리 하나가 최대 150~200바이트

  • INT UNSIGNED

    • 인덱스 엔트리 하나가 4바이트

  • 같은 100만 행 기준

    • 문자열 인덱스: 약 150~200MB

    • 숫자 인덱스: 약 4MB
      → 인덱스 I/O와 메모리 사용량이 40~50배 차이 날 수 있음.


3. MySQL 실행 계획 차이

  • WHERE mb_id = '*** 개인정보보호를 위한 이메일주소 노출방지 ***'
    → 인덱스 탐색 + 문자열 비교 (collation 규칙 포함)

  • WHERE mb_no = 12345
    → 인덱스 탐색 + 정수 비교 (매우 빠름)

숫자 키는 B-Tree 탐색에서도 깊이가 줄어드는 경우가 많아 캐시 적중률이 올라갑니다.


4. 실무에서 쓰는 방식

그누보드 5에서도 mb_no(AUTO_INCREMENT 정수)를 PK로 두고,
mb_id는 UNIQUE KEY로 유지하면서 검색은 가능하게 하는 방식이 일반적입니다.

JOIN이나 WHERE 조건이 빈번히 쓰이는 곳에서는 mb_no를 사용하면
쿼리 속도와 인덱스 효율이 확실히 좋아집니다.


결론

  • mb_id(문자열) → mb_no(정수)로 바꾸면 속도 차이 납니다.

  • 데이터가 많을수록, 인덱스 탐색이 많은 쿼리일수록 차이가 커집니다.

  • 이메일 검색이 필요하면 mb_id는 그대로 두고, 내부 로직에서 식별자는 mb_no로 통일하는 게 좋습니다.


 

이라고 챗지피티로 찾아보니 나오네요~ 조건문이 mb_id로 할것이 아니면 고유번호도 괜찮은데 잘 판단해서 하는게 좋아요

유의미한 속도 차이는 없습니다.

두 컬럼 모두 Primary Key 또는 Unique Index로 설정되어 있기 때문입니다.

 

실제로는 인덱스 여부가 성능에 더 큰 영향을 주며,

문자열/숫자 비교로 인한 차이는 극히 미미합니다.

mb_no에 PRIMARY KEY + AUTO_INCREMENT 설정되어 있다면, SQL은 이를 클러스터 인덱스로 최적화합니다. 또한 mb_id에 UNIQUE 인덱스가 있더라도, VARCHAR 인덱스는 비교 비용이 더 큽니다.

하여

mb_no를 중심으로 쿼리 설계하시면 확실히 성능 이점이 있으며, 특히 회원 수가 많아질수록 그 속도차이를 느낄수 있습니다.

물론 단일 조회시에는 큰차이는 느낄수 없습니다. 하지만 대용량 검색시 인덱스 크기 가 작아지니 빠른탐색이 된다라는뜻이니, 비교연산이 빠르며 메모리 캐싱이 효율적으로 대용량 처리 유리하다 보니 빠를 수있다고 보시면됩니다. 이는 데이터 INT 와 VARCHAR 타입의 차이라고 보시면됩니다.

답변을 작성하시기 전에 로그인 해주세요.
QA 내용 검색
질문등록
전체 129,102
© SIRSOFT
현재 페이지 제일 처음으로