2012-05-10 3 views
9

MySQL에 저장된 값이 항상 정확히 32 자일 것이라는 것을 알고있는 경우 VARCHAR 대신에 열 유형 CHAR을 만드는 것이 더 나은 성능입니까? VARCHAR과 CHAR의 성능 차이는 정확히 무엇입니까?고정 길이 문자열의 경우 MYSQL VARCHAR 또는 CHAR

감사합니다.

+0

관련 http://stackoverflow.com/a/34802591/934739 –

답변

7

나는 CHAR을 사용할 것입니다.

CHAR 열을 검색 할 가능성이있는 경우 VARCHAR 이상의 작은 성능 업그레이드를 제공합니다.

데이터 크기가 고정 될 것이므로 VARCHAR에는 1,240 바이트의 접두사가 접두어로 저장되므로 CHAR을 사용할 때 단점이 없습니다.

참조 : MySQL CHAR vs VARCHAR

3

VARCHAR 컬럼 use a one or two byte prefix to store the length는 :

CHAR 달리 VARCHAR 값은 1 바이트 또는 2 바이트 길이의 프리픽스 플러스 데이터로서 저장된다. 길이 접 두부는 값의 바이트 수를 나타냅니다. 값에 255 바이트 이상이 필요하면 열은 하나의 길이 바이트를 사용하고 값에 255 바이트 이상이 필요할 경우 두 개의 길이 바이트를 사용합니다.

따라서 VARCHAR 열은 매우 약간 커집니다. 항상 정확하게 32 문자가 될 것이라는 것을 안다면 CHAR는 합리적인 것처럼 보입니다. 거의 길이가 확실하지 않은 경우 VARCHAR를 사용합니다.

7

첫 번째 질문에 대한 대답, "? 대신 VARCHAR의 컬럼 형 CHAR를 만들기 위해 더 나은 성능이다"... 예이다. 명확히.

길이가 32가 될 것이라는 것을 항상 알고 있다면 반드시 CHAR을 사용해야합니다.

몇 가지 좋은 답변도 여기에 주어진 : Why would I ever pick CHAR over VARCHAR in SQL?

0

문자열이 항상 숯불 갈 다음 (아마 당신이 MD5 해시 데있어) 32 개 문자 일 경우 (32) 당신은 항상이 스크립트를 실행할 수 있습니다 모든 테이블에 대하여와 MySQL이 귀하의 전체 행을 분석하고 당신에게 몇 가지 제안을 줄 것이다

SELECT * FROM table PROCEDURE ANALYSE(); 

무슨 얘기를 참조하십시오. 테이블에 알맞은 숫자 나 행이있는 경우에만 잘 작동합니다.

관련 문제