gpt4 book ai didi

php - 如何优化 1000 个 MySQL 查询?

转载 作者:行者123 更新时间:2023-11-29 04:18:16 25 4
gpt4 key购买 nike

我有一个名为 prices 的数组,它有 1000 个元素,我使用这段代码将它们添加到数据库中:

for (int i = 0; i < 1000; i++) {
$query = "INSERT INTO TABLE data (amount) VALUES";
$query .= " (" . $prices[i] . ");";
mysqli_query($link, $query);
}

虽然可以,但是需要15秒以上才能完成,我该怎么做才能优化呢?

最佳答案

从技术上讲,您甚至不需要循环。您可以简单地将所有值插入一个数组中:

$query = 'INSERT INTO data (amount) VALUES ';
$valueSets = array_fill(0, count($prices), '(?)');//creates an array containing a (?) string for each price
$pdo = new PDO($dsn, $user, $pass, $attr);
$query .= implode(', ', $valueSets);//concatenate onto query string
$stmt = $pdo->prepare($query);
$stmt->execute($prices);

就是这样。当然,这不是一个很好的做事方式,所以我可能会使用这样的东西:

$stmt = $pdo->prepare('INSERT INTO data (amount) VALUES (:price)');
foreach ($prices as $price) {
$stmt->execute([':price' => $price]);
$stmt->closeCursor();//optional
}

或者,如果你真的想使用 Mysqli:

$stmt = $link->prepare('INSERT INTO data (amount) VALUES (?)');
$price = null;
$stmt->bind_param('i', $price);//bind by reference
foreach ($prices as $price) {
$stmt->execute();//insert price
}

但老实说:对我来说,这看起来像是与 DB fixture 相关的东西。我只是将价格放在 CSV 文件或其他文件中,然后运行 ​​LOAD DATA LOCAL INFILE 查询而不是编写脚本来插入所有值

关于php - 如何优化 1000 个 MySQL 查询?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/34244981/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com