MySQL LIKE와 LOCATE: 어느 것이 더 효율적인가요?
MySQL에서 패턴 일치 쿼리를 수행할 때 LIKE라는 두 가지 주요 옵션이 있습니다. 연산자와 LOCATE 함수. 어느 쪽이 더 빠르게 작동하나요?
이 질문에 답하기 위해 간단한 벤치마크를 사용하여 이 두 가지 접근 방식의 성능을 비교해 보겠습니다. 다음 쿼리는 LIKE 연산자를 사용하여 열에 특정 텍스트가 포함된 행을 찾습니다.
SELECT * FROM table WHERE column LIKE '%text%';
다음 쿼리는 LOCATE 함수를 사용합니다. 동일한 작업을 수행하려면:
SELECT * FROM table WHERE LOCATE('text',column)>0;
대규모 데이터 세트에 대해 이러한 쿼리를 실행하면 LIKE 연산자가 약간 더 빠르다는 것을 알 수 있습니다. 주로 LOCATE에 필요한 추가 비교(> 0)를 피하기 때문입니다. 벤치마크 결과는 다음과 같습니다.
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) mysql> SELECT @@version; ---------------------- | @@version | ---------------------- | 5.1.36-community-log | ---------------------- 1 row in set (0.01 sec)
부인 성명: 제공된 모든 리소스는 부분적으로 인터넷에서 가져온 것입니다. 귀하의 저작권이나 기타 권리 및 이익이 침해된 경우 자세한 이유를 설명하고 저작권 또는 권리 및 이익에 대한 증거를 제공한 후 이메일([email protected])로 보내주십시오. 최대한 빨리 처리해 드리겠습니다.
Copyright© 2022 湘ICP备2022001581号-3