>  기사  >  데이터 베이스  >  MySQL의 int, char 및 varchar 성능 비교

MySQL의 int, char 및 varchar 성능 비교

不言
不言앞으로
2018-10-13 15:04:413029검색

이 기사의 내용은 MySQL의 int, char 및 varchar 성능 비교에 관한 것입니다. 이는 특정 참조 값을 가지고 있으므로 도움이 될 수 있습니다.

인터넷에는 그럴듯한 "루머"가 많이 있습니다. 물론 악의적인 것은 아닙니다. 대부분은 스스로 조사하기를 꺼리고 대신 다른 사람의 말을 믿는 개발자입니다.

"int 성능이 char보다 훨씬 높다" 등 데이터베이스에 관한 소문도 많습니다.

최근 int, long, char, varchar에 대한 성능 테스트를 실시한 결과 성능 차이가 크지 않은 것으로 나타났습니다.

Remarks: c8=char(8), s8=varchar(8), i8= ( bigint), c4=char(4), s4=varchar(4), i4=char(4)

100만 행에 대한 인덱스 없는 쿼리:
[c8 쿼리] 20회 실행, 평균 시간 소모 312.0 ms
[s8 쿼리] 20회 실행, 평균 334.3ms 소요
[i8 쿼리] 20회 실행, 평균 276.95ms 소요
[c4 쿼리] 20회 실행, 평균 소요 시간 354.95ms
[s4 쿼리] 20회 실행, 평균 소요 시간 340.45ms
[i4 쿼리] 20회 실행, 평균 시간 291.1ms

인덱스 생성:
c8 인덱스 소요 시간 2439ms
s8 인덱스 소요 2442ms
i8 인덱스는 1645ms 소요
c4 인덱스는 2296ms 소요
s4 인덱스는 2303ms 소요
i4 인덱스는 1403ms 소요

인덱스가 있는 쿼리:
[c8 쿼리] 10,000회 실행, 평균 시간 소모 0.271ms
[s8 실행 query] 10,000번 실행, 평균 0.2354ms 소요
[i8 query] 10,000번 실행, 평균 0.2189ms 소요
[c4 query] 10,000번 실행, 평균 0.303ms 소요
실행 [ s4 쿼리] 10,000번, 평균 시간 소모 0.3094ms
[i4 쿼리] 10,000번 실행, 평균 시간 소모 0.25ms

결론:
No index: 전체 테이블 스캔은 데이터가 없기 때문에 더 빨라지지 않습니다. 더 작지만 전체 속도는 동일합니다. 기본 유형인 int/bigint는 12% 약간 더 빠릅니다.
색인: char와 varchar의 성능은 비슷하지만 int는 18% 약간 더 빠릅니다.

데이터 저장, 읽기 및 쓰기 측면에서 정수는 동일한 길이의 문자열과 동일하며 varchar에는 1바이트가 추가되므로 성능이 저하될 수 있습니다. 약간 영향을 받았습니다(1/n).
데이터 작업 및 비교 측면에서 정수는 기본 지원의 이점을 가지므로 문자열보다 약간 더 빠릅니다 조금.
인덱싱을 사용하면 정수와 문자열 간의 성능 차이가 훨씬 더 무시할 수 있습니다.

실제 개발에서는 많은 개발자가 유형 열거형을 표현하기 위해 char(1) 및 char(4)와 같은 문자열을 사용하는 경우가 많습니다. 제 생각에는 이 접근 방식이 저장 공간을 줄이고 컴퓨팅 성능, 가독성 측면에서 가장 좋은 솔루션입니다. , 유지 관리성 및 확장성 측면에서 int 및 enum과 같은 데이터 유형보다 훨씬 낫습니다.

위 내용은 MySQL의 int, char 및 varchar 성능 비교의 상세 내용입니다. 자세한 내용은 PHP 중국어 웹사이트의 기타 관련 기사를 참조하세요!

성명:
이 기사는 segmentfault.com에서 복제됩니다. 침해가 있는 경우 admin@php.cn으로 문의하시기 바랍니다. 삭제