Foreach太慢了

Jes*_*dor 4 php mysql arrays foreach

我有2个数组:

$questions: pid => name
$answers: pid => rid
Run Code Online (Sandbox Code Playgroud)

它在数据库中插入所有问题(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);
}
Run Code Online (Sandbox Code Playgroud)

在我的经验不足的情况下,我几乎把所有东西都用于foreach,但在这种情况下太慢了.有什么建议?

Lig*_*ica 6

不是INSERT在PHP循环中包装单个查询,而是使用PHP循环在字符串中构建单个 INSERT查询,然后在结尾处执行该单个查询.

提示: INSERT可以同时插入行.

虽然单个INSERT快,MySQL查询的联合往返时总是会很差扩展,因为你重复连接/通信/解释/文件访问开销每个您的N数组元素......所有这些都不用.