2012-07-06 4 views
1

최소 100.000 행 (SQLite)의 테이블 (rowID, name, familyName)이 있습니다."GLOB"SQL 명령의 결과가 느림

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

ROWID 기본 키이며, 이름은 색인 : 나는 글고 변경의 텍스트 (onTextChanged)이 때 내 테이블을 쿼리이 코드를 사용하고 있습니다! 이 코드는 느리게 실행 (~ 6000ms) 단지 등의 EditText에 입력하고, 신속하고 매우 빠르게 두 번째, 세 번째에 작동 키, 내가 먼저 키를 입력 결과 내 코드를 향상시킬 필요가

에 두 번째 및 세 번째만큼 빠르게 ... 이 문제에 도움이 되셨습니까?

+1

이와 같은 대부분의 UI 위젯은 3 자 미만으로 미리보기를하지 않습니다. 한 글자로 시작하는 모든 이름을 표시하는 것이 사용자에게 의미있는 *이 될 수있는 기회는 무엇입니까? –

답변

0

실제로 색인을 사용한다고 가정하면 (내가 선택한 것처럼 들리는가?) 나는 결과의 수를 단순히 제한합니다. UI 미리보기에서 표시 가능한 최대 결과 수를 사용합니다.

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

매우 유용한 형제 ... 감사합니다. – user1507464