대 진 우리는 다음과 같다 테이블이 있다고 가정 : 바이트에 민감한 비교를 수행하려면MySQL byte-for-byte 비교가 더 빠릅니까? bin_collate
create table t1(c1 varchar(x)collate utf8mb4_general_ci, index(c1))
, 우리는 기본적으로 모든 관련 문자열 후행하지 공간이 할 가정 두 가지 방법 (가, 즉, 모두 padspace-compliant) :
select*from t1 where c1 ='test'collate utf8mb4_bin
select*from t1 where c1 = binary'test'
성능에 문제가있는 경우 어느 쪽이 좋을까요?
비 이진 문자 데이터 정렬 인덱스를 사용하는 경우 comparebinary string 또는 이진 데이터 정렬이 더 빠릅니까?
(단지c1
의 이진 동등한를 저장하는 테이블에 새 열을 추가 스토리지에 가능하지 대박입니다.)
해시 및 BTREE 비교 둘을 비교 답변 감사하겠습니다
(PS, 비록 나는 주로 btree 비교에 관심이있다.)
을하고있는 곳이 질문에
답변 옵션 1 빠른 것입니까? –
성능이 중요한 경우 c1에 색인을 추가하는 것이 개선 될 수 있습니다. 또한, c1은 어떤 종류의 가능한 값을 가질 수 있습니까? 열거 형에 맞을 수 있습니까? 사전 처리 된 c1 변형을 가진 열을 추가해야합니까? – Ashalynd
숫자가 기발하고 일방적 인 테스트를 사용하여 결론에 도달 할만큼 충분히 가깝습니다. @Ahalynd, 색인은 이미'utf8mb4_general_ci'입니다. 사용자가 임의의 문자, 심지어 중국어 문자를 입력 할 수 있지만 저장된 값은 "영어 단어"입니다. – Pacerier