2013-02-07 4 views
0

iPhone 앱에서 sqlite를 사용하고 있습니다. 검색 상자에, 우리는 데이터베이스를 조회하고 사용자가에 입력 된 내용으로 연관된 모든 값을 반환하고자합니다. 현재, 우리는 우리는 무력 시작여러 열에서 LIKE "%%"로 검색 성능 향상

Gene 
Disease 
Medicine 
Keywords 

같은 몇 가지 다른 컬럼에서 검색 검색 텍스트가 변경 될 때 (일부 의사 코드)이 메소드를 호출하는 방법

// Basically we do this for our 4 columns we are searching on 
    NSString *query2 = [NSString stringWithFormat:@"select * from MedicineList where MedicineList.Keywords like \"%%%@%%\"",searchtext]; 

    FMResultSet * rs2 = [ _patientAnnotatedDatabase executeQuery:query2]; 
    while ([rs2 next]) 
    { 
     // if you find anything, put it in a dictionary 
    } 
    [rs2 close]; 

그것은 열을 검색하고 결과의 사전을 반환하는 하나의 큰 방법입니다. 우리의 데이터 세트가 작을 때 작동합니다. 이제는 우리의 데이터 세트가 더 커졌습니다. 우리가 찾고있는 컬럼에 인덱스를 만드는 것 외에 우리가 할 수있는 다른 퍼포먼스가 있습니까? 미리 감사드립니다.

답변

1

LIKE%word%과 같은 패턴은 일반 색인으로 최적화 할 수 없습니다.

SQLite의 full text search 확장이 설계된 단어를 검색합니다.