2
where 절에 여러 regexp가있는 쿼리가 있습니다. where 절에 포함 된 coloumns는 이미 색인화되어 있습니다. 그러나 쿼리가 인덱스를 사용하고 있지 않습니다. MySql 정규 표현식이 인덱스를 사용합니까? 그렇지 않은 경우이 문제를 해결할 수있는 방법은 무엇입니까?MySQL 정규식 인덱스
where 절에 여러 regexp가있는 쿼리가 있습니다. where 절에 포함 된 coloumns는 이미 색인화되어 있습니다. 그러나 쿼리가 인덱스를 사용하고 있지 않습니다. MySql 정규 표현식이 인덱스를 사용합니까? 그렇지 않은 경우이 문제를 해결할 수있는 방법은 무엇입니까?MySQL 정규식 인덱스
아니요, 정규 표현식 조회는 색인을 사용할 수 없습니다. 정규식을 적용하는 것이 인덱스라면, 조금 더 빨라질 수도 있지만, 본질적으로 테이블 스캔입니다.
제가 알고있는 유일한 해결책은 RLIKE 'foo.*'
대신 LIKE 'foo%'
대신 정규식을 사용하는 것입니다. 해당 열의 색인은 LIKE를 사용할 수 있지만 RLIKE는 사용할 수 없습니다.
감사 데이빗. 이것은 정확하게 내가 확인하고 싶은 것입니다 .. 그러나, 'LIKE'로 이미 일했습니다. 제 문제는 제가 양쪽에서 검색하고 싶다는 것입니다. 시험은 현장의 어느 위치 에나있을 수 있습니다. 그래서 쿼리는 LIKE '% foo %'입니다. 이런 경우 인덱스를 작동시키는 방법이 있습니까? 감사합니다. Vivek – Vivek
정확합니다. LIKE "상수 %"를 사용하여 범위를 좁힐 수 있다면, 그 절은 인덱스를 사용하여 결과를 이미 좁힐 수 있습니다. – Konerak
@Vivek 불행히도 없습니다. 그것이 밝혀 졌을 때, 저는 최근에 똑같은 일을하고있었습니다. 인덱스가 그것을 도울 수 없기 때문에'LIKE '% foo %'의 결과를 영리하게 캐쉬하려고했습니다. –