有效方式:多个插入的一个事务或多个插入的多个事务

时间:2014-12-12 06:48:12

标签: javascript sqlite phonegap-plugins database-performance cordova-plugins

哪个会提高我的性能,哪个会提高以下方案phonegap sqllite db的性能?

场景: 我有1000个语句的多个插入语句。

方法: 1.为所有插入语句设置一个事务[db.transaction]

db.transaction(function(tx){
   data.forEach(function(dataItem) {     
         tx.executeSql("INSERT INTO test (id, name) VALUES (?,?)", [dataItem.id, dataItem.name]});
}, errorInsertingSectorTable, successInsertSector);}

或 2.对于每个具有单独db.transaction的插入语句

 db.transaction(function(tx){
   data.forEach(function(dataItem) {   
       dbExecution.databaseVar.transaction(function(tx) {
         tx.executeSql("INSERT INTO test (id, name) VALUES (?,?)", [dataItem.id, dataItem.name]});
});}, error, success);}

哪种方法具有快速性能或者对于phonegap应用程序和最佳方法的开销较小? 请帮助我们澄清一下。

1 个答案:

答案 0 :(得分:-1)

sqlite中的批量插入示例:Is it possible to insert multiple rows at a time in an SQLite database?

在事务中执行批量插入比运行许多请求更快。想象一下,减少一次批量请求的通信量。如果你有很多行,你可以把它们分成几块。

编辑:由于建议不够,让我再给你一些想法。

  • 您需要循环所有数据
  • 在每次迭代中将(?,?)添加到查询字符串
  • 在每次迭代中将值添加到关联数组
  • 通过将查询字符串传递给值
  • 来调用您的函数