utf8_general_ci와 utf8_unicode_ci의 차이점은 무엇입니까? [복제]
mysql 데이터베이스에 유망 해 보이는 유니 코드에 대한 두 가지 옵션이 있습니다.
utf8_general_ci unicode (multilingual), case-insensitive
utf8_unicode_ci unicode (multilingual), case-insensitive
utf8_general_ci와 utf8_unicode_ci의 차이점을 설명해 주시겠습니까? 데이터베이스를 설계 할 때 하나를 선택하면 어떤 효과가 있습니까?
utf8_general_ci이것은 매우 간단하고 유니 코드에서는 매우 깨진 데이터 정렬 로 일반 유니 코드 텍스트에 잘못된 결과 를 제공 합니다. 그것이하는 일은 :
- 표준 분해를 위해 유니 코드 정규화 형식 D로 변환합니다.
- 결합 문자를 제거합니다.
- 대문자로 변환
유니 코드 대 / 소문자를 이해하지 못하기 때문에 유니 코드에서는 올바르게 작동하지 않습니다. 유니 코드 대 / 소문자만으로는 ASCII 방식이 처리 할 수있는 것보다 훨씬 더 복잡합니다. 예를 들면 :
- “ẞ”의 소문자는“ß”이지만“ß”의 대문자는“SS”입니다.
- 그리스어 소문자는 두 개 있지만 대문자는 하나만 있습니다. "Σίσυφος"를 고려하십시오.
- "ø"와 같은 문자는 "o"와 분음 부호로 분해되지 않으므로 올바르게 정렬되지 않습니다.
다른 많은 미묘함이 있습니다.
utf8_unicode_ci표준 Unicode Collation Algorithm을 사용 하며 확장 및 합자를 지원합니다. ".
utf8_general_ci 확장 / 연결을 지원하지 않으며 이러한 모든 문자를 단일 문자로 정렬하며 때로는 잘못된 순서로 정렬합니다.
utf8_unicode_ci이다 일반적으로 보다 정확한 모든 스크립트. 예를 들어, 키릴 어 블록 :utf8_unicode_ci은 러시아어, 불가리아어, 벨로루시 어, 마케도니아 어, 세르비아어 및 우크라이나어와 같은 모든 언어에 적합합니다. utf8_general_ci는 키릴 자모의 러시아어 및 불가리아어 하위 집합에만 적합합니다. 벨로루시 어, 마케도니아 어, 세르비아어 및 우크라이나어에서 사용되는 추가 문자는 잘 정렬되지 않습니다.
의 비용은 utf8_unicode_ci그것이라는 것이다 약간 비트보다 느립니다 utf8_general_ci. 그러나 그것은 정확성을 위해 지불하는 대가입니다. 틀린 답이 빠르거나 옳은 답이 약간 느릴 수 있습니다. 당신의 선택. 잘못된 답을주는 것을 정당화하는 것은 매우 어렵 기 때문에 그것이 utf8_general_ci존재하지 않는다고 가정하고 항상를 사용하는 것이 가장 좋습니다 utf8_unicode_ci. 오답을 원하지 않는 한.
출처 : http://forums.mysql.com/read.php?103,187048,188748#msg-188748
에서 유니 코드 문자 집합 에서 MySQL의 문서 :
유니 코드 문자 집합의 경우
_general_ci데이터 정렬을 사용하여 수행되는 작업이 데이터 정렬보다 빠릅니다_unicode_ci. 예를 들어utf8_general_ci데이터 정렬에 대한 비교는에 대한 비교 보다 빠르지 만 약간 덜 정확합니다utf8_unicode_ci. 그 이유는utf8_unicode_ci확장과 같은 매핑 을 지원하기 때문입니다. 즉, 한 문자가 다른 문자의 조합과 동일한 것으로 비교할 때. 예를 들어, 독일어 및 일부 다른 언어에서“ß”는 “ ”와 같습니다ss.utf8_unicode_ci축약 및 무시할 수있는 문자도 지원합니다.utf8_general_ci확장, 축소 또는 무시할 수있는 문자를 지원하지 않는 레거시 데이터 정렬입니다. 문자간에 일대일 비교 만 할 수 있습니다.
'Programing' 카테고리의 다른 글
| Xcode에서 PhoneGap 앱의 자바 스크립트 오류를 확인하는 방법은 무엇입니까? (0) | 2020.09.25 |
|---|---|
| 파일 시스템이 아닌 데이터베이스에 파일을 저장합니까? (0) | 2020.09.25 |
| Ruby에서 반복하는 동안 배열을 수정하려면 어떻게해야합니까? (0) | 2020.09.25 |
| 자체 주석에 대한 선택적 매개 변수를 생성하는 방법은 무엇입니까? (0) | 2020.09.25 |
| "RedirectToAction"을 사용하여 컨트롤러에서 해시로 리디렉션 (0) | 2020.09.25 |