4
我正在嘗試優化本地數據庫在正在開發的Web應用程序中填充的速度。目前,它使用PHP訪問數據庫,然後使用Javascript將該數據插入到本地數據庫中。優化WebSQL本地數據庫人口
問題是,除了一些條目之外的任何東西都會降低速度,我非常肯定這是因爲它爲每行執行單獨的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插入它和運行PHP代碼的Javascript。
我不明白在第3行使用下劃線。 – 2012-05-02 20:45:53
@Pedro:它是[underscore.js](http://documentcloud.github.com/underscore/)的一部分,'_(array ).each'就像'forEach'一樣工作,爲'array'中的每個元素執行給定的函數。 – DCoder 2012-05-03 04:03:16
如果其中一個插入失敗,那麼如何管理事務呢?由於每個executeSQL都是異步的,它可能會在失敗之前插入其他SQL。有沒有辦法解決這個問題。 – VikrantY 2013-09-08 13:04:01