Java 如何在Android中加速SQLite数据库插入?
在字典查询应用程序中生成大量结果时,我似乎在某个点上每次插入500-1000毫秒。有什么我不懂的插入技巧吗 下面是一个插入的示例Java 如何在Android中加速SQLite数据库插入?,java,android,performance,sqlite,Java,Android,Performance,Sqlite,在字典查询应用程序中生成大量结果时,我似乎在某个点上每次插入500-1000毫秒。有什么我不懂的插入技巧吗 下面是一个插入的示例 long id = this.getDbAdapter().insertData( "combo", result.getWord(), String.valueOf(result.getNumLetters()), String.valueOf(result.getPointsScrabble()), String.v
long id = this.getDbAdapter().insertData(
"combo",
result.getWord(),
String.valueOf(result.getNumLetters()),
String.valueOf(result.getPointsScrabble()),
String.valueOf(result.getPointsWordsWithFriends())
);
if (id < 0) {
Log.i(TAG, "Database combo insertion of " + result.getWord() + " unsuccessful :(");
} else {
Log.i(TAG, "Database combo insertion of " + result.getWord() + " successful :)");
}
众所周知,在多个插入之间重用a可以提高插入速度
SQLiteDatabase db = helper.getWritableDatabase();
db.beginTransaction();
try {
final SQLiteStatement insertStatement = db.compileStatement("INSERT INTO x (a,b) VALUES (?, ?);");
for (Item item : itemsToInsert) {
insertStatement.clearBindings();
insertStatement.bindLong(1, item.getA());
insertStatement.bindString(2, item.getB());
insertStatement.executeInsert();
}
db.setTransactionSuccessful();
} finally {
db.endTransaction();
}
与为每行执行一个新的insert语句相比,如果您插入了许多insert语句,性能提升通常是2-3倍。您可以实现的最简单和最有效的性能提升之一是管理数据库事务 这可以通过以下方式实现:
db.beginTransaction();
try {
InsertData();
db.setTransactionSuccessful();
} catch {
//Error in between database transaction
} finally {
db.endTransaction();
}
此外,通过修改到数据库的标准连接字符串可以提高速度。是各种速度改进的绝佳资源,只有代码可以帮助回答此问题。请将代码张贴在您正在进行这些插入的地方,这些插入花费了很长时间。请查看右侧的
相关列。这里有一堆相关的问题。为什么要为查询执行插入?这个问题很不清楚,到目前为止答案还不成熟。。。他们可能会说“快一点的手机”,这让事情有点快了。。。谢谢:)
db.beginTransaction();
try {
InsertData();
db.setTransactionSuccessful();
} catch {
//Error in between database transaction
} finally {
db.endTransaction();
}