>  기사  >  데이터 베이스  >  ## 문자열 일치를 위해 `LIKE`와 `LOCATE` 중 MySQL에서 어느 것이 더 빠릅니까?

## 문자열 일치를 위해 `LIKE`와 `LOCATE` 중 MySQL에서 어느 것이 더 빠릅니까?

Patricia Arquette
Patricia Arquette원래의
2024-10-25 02:36:30610검색

## Which is Faster in MySQL: `LIKE` or `LOCATE` for String Matching?

MySQL LIKE와 LOCATE 중 어느 것이 더 빠릅니까?

MySQL에는 문자열의 패턴 일치를 위해 일반적으로 사용되는 두 가지 함수가 있습니다. LIKE 그리고 찾아보세요. 두 함수 모두 문자열 내의 하위 문자열을 검색하는 데 사용할 수 있지만 접근 방식과 성능 특성이 다릅니다.

LIKE 대 LOCATE

LIKE 연산자는 와일드카드를 사용하여 다음을 수행합니다. 문자 패턴을 일치시킵니다. %(임의의 문자와 일치) 및 _(단일 문자와 일치)를 포함한 다양한 와일드카드 문자를 지원합니다. 예:

<code class="sql">SELECT * FROM table WHERE column LIKE '%text%';</code>

이 쿼리는 열 값에 "text"라는 문자열이 포함된 모든 행을 검색합니다.

한편, LOCATE 함수는 위치를 검색합니다. 문자열 내의 지정된 부분 문자열. 하위 문자열이 처음 나타나는 인덱스를 반환하거나, 하위 문자열을 찾을 수 없으면 0을 반환합니다. 예:

<code class="sql">SELECT * FROM table WHERE LOCATE('text', column) > 0;</code>

이 쿼리는 열 값에 하위 문자열 "text"가 포함된 모든 행을 검색합니다.

성능 비교

일반적으로 LIKE 연산자는 LOCATE보다 약간 빠릅니다. LIKE는 결과가 0보다 큰지 확인하기 위해 추가 비교를 수행할 필요가 없기 때문입니다.

이러한 성능 차이를 입증하려면 다음 벤치마크를 고려하세요.

<code class="sql">mysql> SELECT BENCHMARK(100000000,LOCATE('foo','foobar'));
+---------------------------------------------+
| BENCHMARK(100000000,LOCATE('foo','foobar')) |
+---------------------------------------------+
|                                           0 |
+---------------------------------------------+
1 row in set (3.24 sec)

mysql> SELECT BENCHMARK(100000000,LOCATE('foo','foobar') > 0);
+-------------------------------------------------+
| BENCHMARK(100000000,LOCATE('foo','foobar') > 0) |
+-------------------------------------------------+
|                                               0 |
+-------------------------------------------------+
1 row in set (4.63 sec)


mysql> SELECT BENCHMARK(100000000,'foobar' LIKE '%foo%');
+--------------------------------------------+
| BENCHMARK(100000000,'foobar' LIKE '%foo%') |
+--------------------------------------------+
|                                          0 |
+--------------------------------------------+
1 row in set (4.28 sec)</code>

As 벤치마크 결과에 따르면 문자열 내의 하위 문자열을 검색할 때 LIKE가 LOCATE보다 약간 빠릅니다. 그러나 대부분의 실제 사용 사례에서는 성능 차이가 상대적으로 작습니다.

위 내용은 ## 문자열 일치를 위해 `LIKE`와 `LOCATE` 중 MySQL에서 어느 것이 더 빠릅니까?의 상세 내용입니다. 자세한 내용은 PHP 중국어 웹사이트의 기타 관련 기사를 참조하세요!

성명:
본 글의 내용은 네티즌들의 자발적인 기여로 작성되었으며, 저작권은 원저작자에게 있습니다. 본 사이트는 이에 상응하는 법적 책임을 지지 않습니다. 표절이나 침해가 의심되는 콘텐츠를 발견한 경우 admin@php.cn으로 문의하세요.