開発中の Web アプリにローカル データベースが入力される速度を最適化しようとしています。現在、PHP を使用してデータベースにアクセスし、Javascript を使用してそのデータをローカル データベースに挿入します。
問題は、エントリが2つ以上あると速度が低下することです。これは、すべての行に対して個別のSQLクエリを実行するためだと確信しています。私はトランザクション(コミットとロールバックなど)について調べてきましたが、それは答えのように思えますが、それを実装する方法や場所さえ完全にはわかりません。
以下は、特定のテーブルをロードする関数の 1 つのサンプルです。
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 があります。