Optymalizacja populacji lokalnych baz danych WebSQL
Próbuję zoptymalizować szybkość, z jaką moja lokalna baza danych wypełnia się w rozwijanej aplikacji internetowej. Obecnie używa PHP do uzyskania dostępu do bazy danych, a następnie wstawia te dane do lokalnej bazy danych za pomocą Javascript.
Problem polega na tym, że cokolwiek więcej niż kilka wpisów, spowalnia to i jestem pewien, że to dlatego, że wykonuje indywidualne zapytanie SQL dla KAŻDEGO wiersza. Czytałem o transakcjach (Commits i Rollbacks, a co nie) i wydaje się, że to odpowiedź, ale nie jestem do końca pewien, jak go wdrożyć, a nawet gdzie.
Oto przykład jednej z funkcji, która ładuje określoną tabelę.
<code>function ploadcostcodes() { $IPAddress = ''; $User = ''; $Password = ''; $Database = ''; $Company = ''; $No=''; $Name=''; ploadSQLConnection($IPAddress,$User,$Password,$Database,$Company); </code>
// To łączy się z rzeczywistą bazą danych, z której pochodzą informacje.
<code>$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; } </code>
Nie wiem, co wymaga transakcji (lub nawet jeśli jest to konieczne). Jest MSSQL, aby uzyskać dostęp do danych, SQLite, aby go wstawić, i Javascript, który uruchamia kod PHP.