텍스트 필드의 마지막 4자를 비교하려고합니다.SQLite Like 대 Substr
성능 현명한, 어떻게해야합니까 :
select * from table where col like '%last';
또는
select * from table where substr(col,-4)='last';
텍스트 필드의 마지막 4자를 비교하려고합니다.SQLite Like 대 Substr
성능 현명한, 어떻게해야합니까 :
select * from table where col like '%last';
또는
select * from table where substr(col,-4)='last';
쿼리 전에 EXPLAIN
을 사용하여 가상 컴퓨터 작업을 시도했으며 substr()
기능을 가진 제품은 LIKE
인 것보다 OP 코드가 3 개 더 많습니다. 그렇다고 반드시 느려야 함을 의미하는 것은 아니지만 그럴 수도 있습니다.
고마워요, 헥사. – Francisc
당신은 와일드 카드로 끝나는를 사용하는 경우 인덱스를 활용할 수 없습니다 :
LIKE '%.edu'
이
대안은 다른 열에서 문자열의 반대 버전을 저장하는 것, 인덱스를 반대하는 -content 열을 사용하고 LIKE (또는 GLOB 함수 []를 사용하십시오. 여러 SQLite 구현에서 LIKE()가 재정의되었으므로 인덱스 사용을 방지합니다.] 찾고있는 문자열의 역 버전을 전달합니다. 예를 들어, .edu로 끝나는 URL을 찾으려면 역행 열에서 'ude.'로 시작하는 값을 검색하십시오.
감사합니다. – Francisc
The optimizer overview 페이지 4 절에서는 LIKE 연산자가 col LIKE 'something that does not begin with a percent sign%'
종류의 식을 최적화하도록 설계되어 있다고 설명합니다.
또 다른 고려 사항 :'LIKE'는 SQL92 표준입니다.'SUBSTR'에 대해서는 그렇게 확신하지 못합니다. –