2013-02-07 58 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擴展的設計目的。