[英]Optimizing WebSQL Local Database Population
我正在嘗試優化我的本地數據庫在正在開發的 Web 應用程序中的填充速度。 目前,它使用 PHP 訪問數據庫,然后使用 Javascript 將該數據插入本地數據庫。
問題是,除了幾個條目之外的任何東西都會減慢它的速度,我很確定這是因為它對每一行執行一個單獨的 SQL 查詢。 我一直在閱讀交易(提交和回滾等等),這似乎是一個答案,但我不完全確定如何實施它,甚至不確定在哪里實施。
這是加載特定表的函數之一的示例。
function ploadcostcodes()
{
$IPAddress = '';
$User = '';
$Password = '';
$Database = '';
$Company = '';
$No='';
$Name='';
ploadSQLConnection($IPAddress,$User,$Password,$Database,$Company);
// 這連接到信息來自的實際數據庫。
$Login = 'XXXXXXX';
$conn=mssql_connect($IPAddress,$Login,$Password);
if (!$conn )
{
die( print_r('Unable to connect to server', true));
}
mssql_select_db($Database, $conn);
$indent=" ";
$sql="SELECT Cost_Code_No as No, Description as Name, Unit_of_Measure FROM v_md_allowed_user_cost_codes WHERE Company_No = " . $Company . " and User_No = '" . $User . "'";
$rs=mssql_query($sql);
if (!$rs)
{
exit("No Data Found");
}
while ($row = mssql_fetch_array($rs))
{
$No = addslashes($row['No']);
$Name = addslashes($row['Name']);
$Name = str_replace("'",'`',$Name);
$Unit = addslashes($row['Unit_of_Measure']);
//THIS IS WHERE I SEE THE PROBLEM
echo $indent."exeSQL(\"INSERT INTO Cost_Codes (Cost_Code_No,Name,Unit_of_Measure) VALUES('".$No."','".$Name."','".$Unit."')\",\"Loading Cost Codes...\"); \r\n";
}
mssql_free_result($rs);
mssql_close($conn);
return 0;
}
我不知道什么需要交易(或者即使那是需要做的)。 有 MSSQL 訪問數據,SQLite 插入數據,Javascript 運行 PHP 代碼。
我會准備一個帶占位符的查詢,然后用正確的 arguments 為每一行執行它。像這樣的東西(僅 JS 部分,使用underscore.js作為數組助手):
db.transaction(function(tx) {
var q = 'INSERT INTO Cost_Codes (Cost_Code_No, Name, Unit_Of_Measure) VALUES (?, ?, ?)';
_(rows).each(function(row) {
tx.executeSql(q, [row.code, row.name, row.unit]);
});
});
編輯:帶占位符的查詢有兩個主要好處:
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.