2012-12-20 4 views
2

인덱스 SQLite는 필드의 첫 번째 문자와 일치 : 문자열의 각 단어에 대한 article.body에서가 효율적으로 내가 SQLite는 두 개의 테이블이

CREATE TABLE article (body TEXT) 
CREATE TABLE article_word (
    word TEXT, 
    article_rowid INTEGER, 
    FOREIGN KEY(article_rowid) REFERENCES article(rowid), 
    PRIMARY KEY(word, article_rowid) 
) 

프로그램을 저장 긴 문자열과, 그것은의 소문자 버전을 저장 단어와 함께 rowidarticle_word입니다.

단어에서 대소 문자를 구분하지 않는 첫 번째 문자로 기사를 검색하게하려면 baz을 검색하면 foobar Bazquux spambacon을 포함하는 기사가 생성됩니다.

테이블을 수정/추가하고 (필요한 경우) 최적의 일치를 쿼리 할 수 ​​있습니까? article_word.wordPRIMARY KEY 인덱스의

SELECT a.rowid, a.body FROM article a, article_word w WHERE w.word LIKE "baz%" AND a.rowid = w.article_rowid

걸릴 이점을 않거나 순진하게도 모든 행을 검색합니까?

+0

SQLite의 [전체 텍스트 검색] (http://sqlite.org/fts3.html)을 사용하지 않는 이유는 무엇입니까? –

답변

5

NSPredicate를 사용하여 요구 사항에 따라 특정 특성을 검색하고 코어 데이터에서와 같이 Sqlite로 매핑 할 수도 있습니다.