2010-12-22 3 views
1

내 응용 프로그램에는 utf8을 필요로하는 두 개의 열이 있고 다른 열은 latin 인 테이블이 있습니다. 라틴 문자는 정의 상 비 라틴 문자를 포함하지 않으며 utf8 문자는 utf8 문자를 포함 할 수도 있고 포함하지 않을 수도 있습니다. 하나의 utf8 열이 인덱싱되고 다른 열은 인덱싱되지 않습니다. 열 수준에서MySQL의 컬럼 레벨에 CHARSET 5

혼합되어 문자셋 좋은 방법 :

나는 세 가지 질문이 있습니까?

행 (이 표에있는 행)에 latin chars 및 utf8 chars 만 있으면 데이터 저장 및 색인 크기가 어떻게 영향을 받습니까? 다른 말로하면 utf8 열을 저장하지 않고도 latin과 같은 utf8 열 데이터/색인 크기입니다.

latin과 관련하여 utf8 열에 데이터 및 색인 저장소가 어떻게 영향을 줍니까?

감사합니다.

답변

0

UTF-8은 가변 길이 인코딩입니다. ASCII set 안에있는 문자는 latin1에서와 같이 1 바이트로 인코딩됩니다. 그 너머의 문자는 최대 4 바이트를 사용하여 인코딩됩니다. ASCII 문자로 구성된 문자열의 길이는 UTF8과 latin1에서 동일합니다.

열 수준에서 문자 세트를 혼합하는 것이 좋습니다.

불필요하게 데이터베이스 스키마를 복잡하게하므로 필자는 이것을 한 번도 해본 적이 없으며 아니오라고 말합니다. 데이터베이스 엔진이 그것을 잘 처리 할 수 ​​있어야하는 동안, 나는 것 저장 고려 사항 중하지 사용 혼합 캐릭터 세트. 비용 절감 효과는 극히 미미합니다.

유일한 타당한 이유

내가 특정 정렬 순서 및/또는 케이스/액센트 구분/문자를 구분 검색을위한 서로 다른 데이터 정렬을 사용하는 것입니다 생각할 수있는 캐릭터 세트를 혼합합니다.

+0

Pekka, 저장 및 색인 모두에서 1 바이트 대 4 바이트 수? 러시아어 2 바이트 또는 중국어 4 바이트 등 최대 4 바이트까지? 이것들의 차트가 있습니까? – opteronn

+0

한 번 더 질문, 독일의 움라우트는 US-ASCII가 아니기 때문에 1 바이트 이상을 계산합니까? – opteronn

+0

@opteron 멋지게 보입니다. http://www.utf8-chartable.de/ –