我有两个数组:
$questions: pid => name
$answers: pid => rid
它会将所有问题(pid)插入数据库,如果有答案(rid),则插入答案;如果没有答案,则插入0。
foreach($questions as $value) {
$idanswer = ($answers[$value[pid]]) ? $answers[$value[pid]] : 0;
$idquestion = $value[pid];
$sql = "INSERT INTO solucion ( rid, pid) VALUES ( '$idanswer ', '$idquestion ')";
$db - > query($sql);
}
由于我缺乏经验,我几乎把foreach用在所有情况下,但在这种情况下速度太慢了。有什么建议吗?
INSERT
将很快完成;但1,500个并不会。把单个的INSERT
放在一个foreach
中是错误的。 - Lightness Races in Orbit$db->query($sql);
,循环将几乎是即时的。 运行查询需要时间,这意味着解决方案(就像其他人已经在此处回答的那样)是尽量减少运行的查询数量。 与“foreach的速度”无关。 - Svishforeach
非常快。另一方面,进行数百/数千个数据库查询将需要相当长的时间。这里的解决方案不是避免使用foreach
,而是使用它来构建一个单一的查询,您可以在循环后运行一次,而不是为每个问题运行一个查询。 - Svish