2012-07-06 22 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