2012-07-06 57 views
1

我有一個包含至少100.000行(SQLite)的表(rowID,name,familyName)。我使用這個代碼查詢我的表時的一個EditText改變文本(onTextChanged):來自「GLOB」SQL命令的結果緩慢

mySelectSql = "Select rowID from gamtable WHERE name GLOB ' " + searchEditText.getText().toString() + "*';"; 
Cursor c1 = db.rawQuery(mySelectSql, null); 

ROWID是主鍵,名稱索引!此代碼運行緩慢(〜6000毫秒)只是第一個鍵進入編輯文本,並在第二,第三等工作快速和非常快。

我需要改進我的代碼,導致第一次輸入的密鑰一樣快第二和第三... 在這個問題上的任何幫助?

+1

像這樣的大多數UI小部件將不會預覽輸入少於3個字符。顯示以一個字母開頭的所有名字的機會對用戶有意義*有什麼可能? – 2012-07-06 18:07:03

回答

0

假設它實際上使用索引(聽起來像你檢查過?),我只是簡單地限制結果的數量。在UI預覽中使用可顯示結果的最大數量。

SELECT rowID FROM gamtable WHERE name GLOB 'foo*' LIMIT 15; 
+0

非常非常有用的兄弟...非常感謝! – user1507464 2012-07-06 18:31:41