[SQL] ( "LIKE"및 "="비교) REGEXP 성능
SQL( "LIKE"및 "="비교) REGEXP 성능
내가 MySQL을 사용하고 있습니다. 나는 여기에 한 단어의 경기를 데이터베이스에 쿼리하는 방법에 대한 질문을했다.
예를 들어, = 동작 예와 비교해 WHERE COLUMN_NAME = '값', 정규 표현식 작업이 큰 테이블 =보다 훨씬 더 느리다?
내가 말할 수있는, = 다음과 같은 빠른 동작이며, REGEXP 성능 관점에서 가장 가난한 하나?
해결법
-
==============================
1.관련하여 정규 표현식
관련하여 정규 표현식
정규 표현식은 MySQL의에서 인덱스를 사용하지 않을 수 있습니다. = 인덱스의 경우를 사용합니다 :
이들과 다른 난해한주의 사항이 고려 = 비교가 훨씬 빨리 정규 표현식보다.
같은과 관련하여
와일드 카드는 첫 번째 문자가 아닌 경우 LIKE 인덱스를 사용할 수 있습니다.
SELECT * FROM t WHERE a LIKE 'abc' <<-- (case insensitive `=`) can use an index SELECT * FROM t WHERE a LIKE 'abc%' <<-- can use an index SELECT * FROM t WHERE a LIKE 'a%' <<-- can use an index, depending on cardinality SELECT * FROM t WHERE a LIKE '%a%' <<-- cannot use an index SELECT * FROM t WHERE a LIKE '_agf' <<-- cannot use an index
인덱스를 사용하는 경우 등의 성능에 매우 근접 (리턴 동일한 행 수를 가정) =이다.
-
==============================
2.전체 텍스트 검색 : 데이터를 검색하는 또 다른 방법이있다. 등 = (실행 시간) 충분하지 않고 한편 스핑크스, 루씬 너무 강력 될 때 사용될 수있다.
전체 텍스트 검색 : 데이터를 검색하는 또 다른 방법이있다. 등 = (실행 시간) 충분하지 않고 한편 스핑크스, 루씬 너무 강력 될 때 사용될 수있다.
하는 방법은 열 및 쿼리 거기에 전체 텍스트 인덱스를 생성해야합니다 그것을 사용. 당신이 ft_min_word_len의 유의하십시오 사용할 경우, ft_max_word_len 시스템은 그 최소 / 최대 크기의 단어를 감소 바르.
희망이 도움이.
귀하의 질문의 나머지는 @Johan 응답했다.
from https://stackoverflow.com/questions/8153271/regexp-performance-compare-with-like-and by cc-by-sa and MIT license
'SQL' 카테고리의 다른 글
[SQL] 그룹화 순서 열 값의 변화에 의해 데이터 그룹 (0) | 2020.06.29 |
---|---|
[SQL] SQL DATEDIFF - 행 사이 DATEDIFF를 찾을 수 (0) | 2020.06.29 |
[SQL] PHP : 단일 쿼리에서 업데이트 여러 MySQL의 필드 (0) | 2020.06.29 |
[SQL] 어떻게 재귀 아이들의 모든 ID를 찾는 방법은? (0) | 2020.06.29 |
[SQL] 하나 개의 배치에서 두 개의 서로 다른 준비된 문 (0) | 2020.06.29 |