如何使用HTML5将1000个记录插入sqlite时加快进程

Nee*_*aja 5 sqlite html5

我是开发HTML5应用程序的新手.在这里我想用HTML5将1000条记录插入sqlite数据库.这个过程非常缓慢.如何在插入记录之前使用BEGIN/COMMIT.以这种方式加快插入.请指导我任何人.提前致谢.请在Chrome浏览器中运行此示例.这是供您参考的代码:

<!DOCTYPE HTML>
<html>
<head>
<script type="text/javascript">
var db = openDatabase('mydb', '1.0', 'Test DB', 2 * 1024 * 1024);
var msg;
//db.transaction(function(tx){tx.executeSql("BEGIN",[]);});
for(var i=0;i<1000;i++)
{
    txquer(i,"test");
}
//db.transaction(function(tx){tx.executeSql("COMMIT",[]);});
db.transaction(function (tx) {
  tx.executeSql('SELECT * FROM LOGS', [], function (tx, results) {
   var len = results.rows.length, i;
   msg = "<p>Found rows: " + len + "</p>";
   document.querySelector('#status').innerHTML +=  msg;  
 }, null);
});
function txquer(i,test)
{ 
    db.transaction(
    function(tx){
      tx.executeSql('INSERT INTO LOGS (id, log) VALUES (?, ?)',[i,test]);    
    }
    );
} 
</script>
</head>
<body>
<div id="status" name="status">Status Message</div>
</body>
</html>
Run Code Online (Sandbox Code Playgroud)

此致,Neeraja.

Wil*_*ill 7

这个问题是你为每个步骤使用一个单独的事务,而不是重用它,因此它运行得很糟糕.

db.transaction是一个事务,因此不需要BEGIN/COMMIT.

试试这个:

<!DOCTYPE HTML>
<html>
<head>
<script type="text/javascript">
var db = openDatabase('mydb', '1.0', 'Test DB', 2 * 1024 * 1024);
var msg;
db.transaction(function (tx) {
    for(var i=0;i<1000;i++)
    {
        txquer(tx, i,"test");
    }
});
db.transaction(function (tx) {
  tx.executeSql('SELECT * FROM LOGS', [], function (tx, results) {
   var len = results.rows.length, i;
   msg = "<p>Found rows: " + len + "</p>";
   document.querySelector('#status').innerHTML +=  msg;  
 }, null);
});
function txquer(tx,i,test)
{ 
    tx.executeSql('INSERT INTO LOGS (id, log) VALUES (?, ?)',[i,test]);    
} 
</script>
</head>
<body>
<div id="status" name="status">Status Message</div>
</body>
</html>
Run Code Online (Sandbox Code Playgroud)


Ben*_*oit 1

您将开始 1000 笔交易。提交事务很慢,因为它与硬盘驱动器速度相关。看到这个