我有大量字符串,大约 15,000 个,我使用以下代码存储在 SQLite 数据库中:
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
}
然后我使用以下方法搜索该数据库,以挑选出与我正在寻找的键匹配的任何字符串:
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;
}
目标是在用户在保留板上输入时实时执行此操作,因此响应时间是关键,而现在它的状态需要一秒钟以上才能完成搜索。
我最初考虑将所有项目读入一个数组列表并通过可能更快的排序,但我认为该大小的数组列表可能会导致内存问题。在我的数据库中搜索这些条目的最佳方法是什么?