Sqlite插入优化

时间:2014-11-22 15:35:50

标签: performance sqlite optimization insert

我试图在Android平台上使用我的手机在sqlite中插入3000行。我已经尝试了所有可能的建议,但它仍然无效。我的原始代码使用了单独的insert语句,如下所示:

private void insertData(List<MyDataRows> dr){
    int i = 0;
    private static SQLiteDatabase db=null;
    db=SqlHelper.openDatabase(dbFilePath);
    try{
        db.beginTransaction();
        for(MyDataRows dr:drs){
             db.execSQL(genInsertSqlStmt(dr));
        }
        db.setTransactionSuccessful();
    }catch(Exception e){
        throw e;
    }finally{
        db.endTransaction();            
    }
}

private String genInsertSqlStmt(MyDataRows dr){
    /*I'll just keep it simple here. Basically its just formatting of sql statement*/
    return "insert into table "+dr.table+" values("+dr.columns+")";
}

此代码将使用大约22到26秒来完成。我发现它不够快,所以我尝试了:

  • 准备好的声明。结果也是一样的。我需要插入的总表是包含3000条记录的80个表。是因为编译不同的表会降低优化过程的速度吗?
  • BULK INSERT。通过批量插入,我的意思是使用insert语句以及使用UNION ALL关键字连接的值。结果甚至更慢一秒钟。大约23到27秒。

sqlite是否已经优化了各个语句,以便我尝试的任何优化实际上都没用?我希望通过这样做可以获得一些严重的性能提升,但我根本没有看到任何改进。真的需要帮助。谢谢你们。

此致 德克斯特

0 个答案:

没有答案