반응형
소문에 따르면 다음과 같습니다.
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
반응형
'MySql' 카테고리의 다른 글
MySQL Hibernate에서 내부 쿼리에 제한을 설정하는 방법은 무엇입니까? (0) | 2020.11.27 |
---|---|
MySQL HikariCP 연결 풀은 즉시 100 개의 연결을 생성합니다. (0) | 2020.11.27 |
MySQL mysql 쿼리에서 지정된 datetime에 가장 가까운 datetime 찾기 (0) | 2020.11.27 |
MySQL MYSQL 워크 벤치에서 생성 된 데이터베이스의 파일 위치 (0) | 2020.11.27 |
MySQL 마 젠토 데이터베이스 구조 설명 (0) | 2020.11.27 |
댓글