php - Foreach太慢

标签 php mysql arrays foreach

我有 2 个数组:

$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,但在这种情况下太慢了。有什么建议吗?

最佳答案

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

提示: INSERT可以同时插入多个行。

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

关于php - Foreach太慢,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/15547206/

相关文章:

php - 如何从较大的数字中动态获取一个数字?

mysql - 如何使用mysql计算头对头统计数据

arrays - 有人能给我解释一下《算法设计手册》中的这一段是什么意思吗?这让我很困惑

c++ - 动态可调阵列和 OpenMP

python - 点积向量化 - NumPy

php - 有没有办法在购物车中显示缺货消息,以具体指示哪些商品已售完?

php - Twig 上的 Symfony 选民

php - 将 PDO 对象传递到类中 - PHP fatal error : Call to a member function execute() on a non-object

php - 执行此 PHP 脚本的最有效方法

MySQL - 结合 SELECT 两个表