반응형
정확한 문자열 일치를 위해 LIKE 대 = 사용
우선 두 가지 차이점을 알고 있습니다.
- Like를 사용할 수 있게 합니다. 와일드카드 % 및 _
- 상당한 후미진 공백
- 배색 문제
더 효율적인 정확한 문자열 일치를 위해 다른 모든 것은 동일합니다.
SELECT field WHERE 'a' = 'a';
또는:
SELECT field WHERE 'a' LIKE 'a';
아니면: 그 차이가 너무 미미해서 문제가 되지 않습니까?
= 비교기가 더 빠르다고 생각합니다.어휘는 일반적인 일치를 하기 위해 비교를 다른 어휘 체계에 보내지 않습니다.대신 엔진이 일치하거나 이동할 수 있습니다.당사의 dbat work는 수백만 개의 행을 가지고 있으며 =는 항상 더 빠릅니다.
괜찮은 DBMS에서 DB 엔진은 문자열에 와일드카드 문자가 없다는 것을 인식하고 암묵적으로 순수한 동등함으로 전환합니다(꼭 동일하지는 않음).=
따라서 처음에는 약간의 성능 히트만 얻을 수 있으며 보통은 적절한 크기의 쿼리에 대해서는 무시할 수 있습니다.
그러나 MySQL은=
연산자가 반드시 기대한 대로 행동하지는 않습니다(순수한 균등성 검사로).특히, 기본적으로 다음에 대한 후행 공간을 고려하지 않습니다.CHAR
그리고.VARCHAR
데이터는 다음을 의미합니다.
SELECT age WHERE name = 'pax'
당신에게 줄을 줄 것입니다.'pax'
,'pax<one space>'
그리고. 'pax<a hundred spaces>'
.
적절한 균등성 검사를 수행하려면 다음을 사용합니다.binary
키워드:
SELECT field WHERE name = binary 'pax'
다음과 같은 방법으로 테스트할 수 있습니다.
mysql> create table people (name varchar(10));
mysql> insert into people value ('pax');
mysql> insert into people value ('pax ');
mysql> insert into people value ('pax ');
mysql> insert into people value ('pax ');
mysql> insert into people value ('notpax');
mysql> select count(*) from people where name like 'pax';
1
mysql> select count(*) from people where name = 'pax';
4
mysql> select count(*) from people where name = binary 'pax';
1
언급URL : https://stackoverflow.com/questions/559506/using-like-vs-for-exact-string-match
반응형
'programing' 카테고리의 다른 글
MySQL Workbench 문자 집합 (0) | 2023.10.23 |
---|---|
고정된 요소를 부모에 대해 배치할 수 있습니까? (0) | 2023.10.23 |
태그의 onclick 속성에서 비롯된 사용자 지정 기능에서 기본값을 호출하지 못하도록 하는 액세스 이벤트 (0) | 2023.10.23 |
스위프트에서 NS Exception 포착 (0) | 2023.10.23 |
C++로 아두이노를 프로그래밍하는 방법 (0) | 2023.10.23 |