次のコードを使用してSQLiteデータベースに保存した文字列が約15,000個あります。
void addKey(String key, String value, String table) {
SQLiteDatabase db = this.getWritableDatabase();
ContentValues values = new ContentValues();
values.put(KEY_KEY, key); // Contact Name
values.put(KEY_VALUE, value); // Contact Phone
// Inserting Row
db.insert(table, null, values);
db.close(); // Closing database connection
}
次に、次の方法を使用してそのデータベースを検索し、探しているキーimに一致する文字列を選択します。
public String searchKeyString(String key, String table){
String rtn = "";
Log.d("searchKeyString",table);
// Select All Query
String selectQuery = "SELECT * FROM " + table;
SQLiteDatabase db = this.getWritableDatabase();
Cursor cursor = db.rawQuery(selectQuery, null);
// looping through all rows and adding to list
if (cursor.moveToFirst()) {
do {
Log.d("searchKeyString","searching");
if(cursor.getString(1).equals(key))
rtn = rtn + "," + cursor.getString(2);
} while (cursor.moveToNext());
}
cursor.close();
db.close();
Log.d("searchKeyString","finish search");
return rtn;
}
目標は、ユーザーがキープボードに入力しているときにこれをリアルタイムで実行することです。そのため、応答時間が重要であり、現在の状態では、検索を実行するのに1秒以上かかります。
最初にすべての項目を配列リストに読み込んで、より高速なものを並べ替えることを検討しましたが、そのサイズの配列リストはメモリの問題を引き起こす可能性があると思いました。データベース内のこれらのエントリを検索するための最良の方法は何ですか?