我自己对 100,000 条记录进行了一些测试。对于更简单的场景,我没有使用 INSERT INTO 而是使用 REPLACE INTO 以避免每次都必须提出新的密钥。
替换成
100,000 行上的 3 列示例 REPLACE INTO table_name VALUES (value1, value2, value3),(value1, value2, value3),(value1, value2, value3)...... 的原始替换大约需要 14 秒。
普通绑定
使用准备语句、绑定值和执行准备语句大约需要 33 秒
foreach ($vars as $var) {
$stmt->bindValue(':a' . $var["value1"], $var["value2"]);
$stmt->bindValue(':b' . $var["value3"], $var["value4"]);
$stmt->bindValue(':c' . $var["value5"], $var["value6"]);
$stmt->execute();
}
绑定但 1 执行
在准备之前创建一个长语句,绑定所有参数并执行一次大约需要 22 秒
REPLACE INTO clientSettings(clientId, settingName, settingValue) VALUES (:a1,:b1,:c1)
(:a2,:b2,:c2)
(:a3,:b3,:c3)
(:a4,:b4,:c4)
.......
请注意,这些是粗略的数字,用于在 100,000 条记录上创建 REPLACE INTO(删除和插入的字段)。