본문 바로가기
MySql

MySQL MySql 쿼리에서 RegEx 대 ​​LIKE의 성능

by 베이스 공부 2020. 11. 27.
반응형

소문에 따르면 다음과 같습니다.

SELECT * FROM lineage_string where lineage like '%179%' and  lineage regexp '(^|/)179(/|$)'

이보다 빠를 것입니다.

SELECT * FROM lineage_string where lineage regexp '(^|/)179(/|$)'

누구든지 확인할 수 있습니까? 또는 그러한 쿼리의 속도를 테스트하는 적절한 방법을 알고 있습니다. 감사

 

해결 방법

 

LIKE 조건이 정규식보다 더 빠르게 평가 될 수 있기 때문에 더 빠를 수 있으므로 대부분의 행이 테스트에 실패하면 더 빠를 수 있습니다. 그러나 성공적인 행에 대해 하나가 아닌 두 개의 테스트를 실행해야하므로 대부분의 행이 성공하면 속도가 느려집니다. 또한 옵티마이 저가 먼저 실행하도록 선택한 표현식에 따라 다릅니다.

다음과 같은 경우 더 큰 속도 향상을 목격 할 수 있습니다.

SELECT * FROM (
   SELECT * FROM lineage_string
   WHERE lineage LIKE '179%'
) WHERE lineage regexp '^179(/|$)'


항상 그렇듯이 가장 좋은 방법은 실제 데이터에서 직접 측정하는 것입니다.

 

참조 페이지 https://stackoverflow.com/questions/2740006

 

 

반응형

댓글