1

少なくとも 100.000 行 (SQLite) のテーブル (rowID、name、familyName) があります。EditText のテキストが変更されたとき (onTextChanged) に、このコードを使用してテーブルをクエリしています。

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

行IDは主キーで、名前は索引付けされています! このコードは、EditText に入力された最初のキーだけでゆっくりと (~6000ms) 実行され、2 番目、3 番目などで非常に高速に動作します。

最初に入力されたキーが 2 番目と 3 番目のキーと同じくらい速くなるようにコードを改善する必要があります...この問題について何か助けはありますか?

4

1 に答える 1

0

実際にインデックスを使用していると仮定すると (チェックしたように聞こえますか?)、単純に結果の数を制限します。UI プレビューで表示可能な結果の最大数を使用します。

SELECT rowID FROM gamtable WHERE name GLOB 'foo*' LIMIT 15;
于 2012-07-06T18:10:33.787 に答える