android中的compileStatement或db.insert

时间:2014-03-06 10:05:20

标签: android sqlite query-optimization android-sqlite

我想多次将记录插入表中,我可以选择使用compileStatement或使用db.insert,如下所示。

String TABLENAME = "table"; //fields in table: id, name
SQLiteStatement statement = db.compileStatement("INSERT INTO "+TABLENAME+" VALUES(?,?);");  
statement.bindLong(1,666);  
statement.bindString(2,"john");
statement.executeInsert();

String TABLENAME = "table";
ContentValues values = new ContentValues();
values.put("id", 666);
values.put("name", "john");
db.insert(TABLENAME, null, values);

哪一个应该是最佳的?

编辑: - 我正在运行的应用程序是单线程的。

2 个答案:

答案 0 :(得分:1)

insert()在每次调用时编译SQL,而compileStatement()方法只编译一次SQL。当多次使用具有不同绑定参数的相同SQL时,compileStatement()方法会减少工作量并且速度更快。

此外,考虑将插入包装在事务中以减少等待I / O所花费的时间。

答案 1 :(得分:0)

理论上,编译语句更好,但在Android设备上,你不太可能处理这么多记录,差异很重要。 (如果你想确定,你必须自己衡量。)