我从mySQL数据库中选择了大量数据:
$sql = "SELECT * FROM data WHERE id = ?";
$q = $pdo->prepare($sql);
$q->execute([$id]);
$array = $q->fetchAll(PDO::FETCH_ASSOC);
var_dump($array);
我希望将这些数据存储到一个数组中,然后在循环中使用此数组。我现在的问题是,我有如此庞大的数据量,数组正在加载和加载,我的系统不堪重负。 有没有办法创建一个包含大量数据并具有更好性能的数组?
答案 0 :(得分:1)
fetchAll()
函数将整个记录映射到变量。
每次迭代映射一行将会快得多
$q->execute([$id]);
$i = 0;
while ($row = $q->fetch()) {
// do something with $row
$i++;
}
答案 1 :(得分:1)
请使用获取功能而不是像下面这样获取所有内容:
while ($arr = $stmt->fetch()){
// do_other_stuff();
}
这将减少系统负载。
答案 2 :(得分:1)
我目前正处理12,000行并将其编码为JSON数组,在我看来这对我来说效果最佳。
PageTwo.__init__()
然后回显(或在我的情况下回显json_encode)它。
答案 3 :(得分:1)
要考虑的主要事项是:
不建议/建议每次循环500k记录。它肯定会影响速度/性能。
我建议以下选项:
PS:您可以考虑使用CRON处理数据并在需要时更新排序顺序。