Html websql插入速度慢

Html websql插入速度慢,html,cordova,web-sql,Html,Cordova,Web Sql,我有大约300条记录需要插入到websql中。我一开始编写了300条没有参数的单独的tx.executeSql insert语句 tx.executeSql("INSERT INTO `beerlist` VALUES ('1', '21st Amendment', 'Back in Black IPA', '83', 'IPA', 'A');"); 在Chrome上,这需要2毫秒。通过Android上的phonegap运行,这大约需要43438毫秒。所以我转而使用prepare语句迭代一些J

我有大约300条记录需要插入到websql中。我一开始编写了300条没有参数的单独的tx.executeSql insert语句

tx.executeSql("INSERT INTO `beerlist` VALUES ('1', '21st Amendment', 'Back in Black IPA', '83', 'IPA', 'A');");
在Chrome上,这需要2毫秒。通过Android上的phonegap运行,这大约需要43438毫秒。所以我转而使用prepare语句迭代一些JSON。像这样:

var beerList = {"beers":[{"beerid":"1","brewery":"21st Amendment","beername":"Back in Black IPA","bascore":"83","beertype":"IPA","beertable":"A"}}

$.each(beerList.beers, function(i, object) {
                    var insert = 'INSERT INTO beerlist VALUES (?, ?, ?, ?, ?, ?)';
                    tx.executeSql(insert, [object.beerid, object.brewery, object.beername, object.bascore, object.beertype, object.beertable], Beer.successInsert, Beer.failureInsert);
                });
我读到了where prepare应该更快,但我在Chrome上看到了相同的性能&实际上,Android上的Phonegap在53559毫秒时的性能稍差。我不敢相信插入300条记录需要约50秒的时间。有什么想法吗?

如您所见,executeSql是通过事务对象调用的。诀窍是重用该事务并发送并行请求。基本上,您使用单个事务,但控制执行多个但很少的异步请求。您应该能够在几毫秒内存储它

在你的例子中,它是不受控制的。在执行所有请求之前,您的300个请求都已排队。这甚至可能使浏览器崩溃


可以在putObjects方法中找到一个示例实现,该方法位于

您是否使用多个事务?可能不是您的插入速度慢,而是事务。在单个事务中包装的多个执行速度要快得多

db.transaction( function(tx){
    for (var i = 0; i < args; i++)
    {
        tx.executeSql(sqlStmnt, args[i]); //args is nested [[1,2],[1,3]]
    }
},
dfd.reject,
dfd.resolve);
db.事务(功能(tx){
对于(变量i=0;i
websql以速度慢而著称,实际上已被弃用。另一种选择是IndexedDB(这也很可怕…)。