source

바이너리 조회를 사용하면 어떤 효과가 있습니까?

goodcode 2022. 9. 23. 00:13
반응형

바이너리 조회를 사용하면 어떤 효과가 있습니까?

질문에 대답하는 동안 나는 충분한 답을 찾지 못한 것에 대해 확신이 서지 않았다.

바이너리를 사용하는 경우의 실제 차이점은 무엇입니까?utf8_bin대소문자를 구분하지 않고utf8_general_ci대조하는 방법?

3개가 보여

  1. 둘 다 정렬 순서가 다릅니다._bin의 정렬 순서는 알파벳의 끝에 umlauts를 붙일 가능성이 있습니다.이는 바이트 값이 비교되기 때문입니다(오른쪽).

  2. 에서 대소문자를 구분하는 검색만 수행_bin

  3. 아니요.A = Ä에 있어서의 평등._bin

그 밖에 주의해야 할 차이점이나 부작용이 있습니까?

레퍼런스:

이 문제를 해결하지 못하는 유사한 질문:

바이너리 대조에서는 스트링을 다음과 같이 정확하게 비교합니다.strcmp()C에서는 문자가 다른 경우(대소문자인지 분음자인지)에 대응합니다.그것의 단점은 정렬 순서가 자연스럽지 않다는 것이다.

('바이너리'와 같이) 부자연스러운 정렬 순서의 예는 다음과 같습니다.A,B,a,b자연스러운 정렬 순서는 다음과 같습니다.A,a,B,b(같은 글자의 소문자 및 대문자 바리에이션이 나란히 정렬됩니다.)

문자열 비교가 매우 단순하고 빠르기 때문에 바이너리 조합의 실질적인 장점은 속도입니다.일반적으로 바이너리가 있는 인덱스는 정렬에 대해 예상된 결과를 생성하지 못할 수 있지만 정확히 일치하는 경우에는 유용합니다.

: 문자열 내의 각 문자의 바이너리 값을 기준으로 문자열을 비교합니다utf8_bin.

: 일반 언어 규칙과 대소문자를 구분하지 않는 비교를 사용하여 문자열을 비교합니다utf8_general_ci.

: 일반 언어 규칙과 대소문자를 구분한 비교를 사용하여 문자열을 비교합니다utf8_general_cs.

예를 들어, 다음은 다음 중 하나를 사용하여 true로 평가합니다.UTF8_general대조는 할 수 없습니다.utf8_bin대조:

Ä = A Ö = O Ü = U

를 사용하여utf8_general_ci대조, 그들은 또한 돌아올 것이다.true같은 경우는 아니더라도요.http://www.phpbuilder.com/board/showpost.php?s=2e642ac7dc5fceca2dbca1e2b9c424fd&p=10820221&postcount=2

다른 답은 그 차이를 잘 설명해 줍니다.

바이너리 조합은 다음과 같은 경우에 도움이 될 수 있습니다.

  • 열에는 암호 해시 등의 16진수 데이터가 포함되어 있습니다.
  • 정확한 일치에만 관심이 있고 정렬에는 관심이 없습니다.
  • [a-z0-9_] 문자만 있는 식별자의 경우 정렬에도 사용할 수 있습니다.
  • 어떤 이유로 CHAR() 또는 VARCHAR 열에 번호를 저장합니다(전화 등).
  • 우편 번호
  • UUID
  • 기타

이러한 경우 모두 바이너리 대조로 (작은) CPU 사이클을 절약할 수 있습니다.

utf8_general_ci를 사용하면 대소문자와 악센트를 고려하지 않고 일치가 발생합니다.단어에 대한 쿼리를 수행해야 할 때 좋은 것일 수 있습니다.

utf8_bin에서는 스트링이 완전히 동일한 경우에만 일치가 발생합니다.이렇게 하면 쿼리가 더 빨라집니다.

언급URL : https://stackoverflow.com/questions/5526334/what-effects-does-using-a-binary-collation-have

반응형