programing

정확한 문자열 일치를 위해 LIKE 대 = 사용

muds 2023. 10. 23. 22:09
반응형

정확한 문자열 일치를 위해 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

반응형