次のコードがあります。最初にデータベースから一意のスタイルを取得し、products テーブルを検索して各スタイルに関連付けられた用語を見つけ、stylerefs テーブルを styleid と productid で更新します。
$query = "Select id,style,terms from su_styles";
if ($results = $sudb->query($query)) {
while($result = $results->fetch_array(MYSQLI_ASSOC)) {
$id=$result['id'];
$style=$result['style'];
$terms=$result['terms'];
$query= "INSERT IGNORE INTO su_stylerefs (mykey,id)
SELECT mykey,$id FROM su_pref where (match(name) against ('$terms' in Boolean Mode))
ON DUPLICATE KEY UPDATE id=$id, mykey = su_pref.mykey";
$sudb->query($query);
最初のクエリの結果をループするのではなく、このクエリを 1 つに書き直すことはできますか? 毎日実行する必要がある他の 10 個の同様のクエリがあり、最初のクエリの一部のテーブルには数百のレコードが含まれている可能性があります。つまり、データベースへの数百の接続があり、時間がかかります。
前もって感謝します