如何从大量数据创建数组?
How can I create an array from a huge amount of data?
我正在从我的 mySQL 数据库中选择大量数据:
$sql = "SELECT * FROM data WHERE id = ?";
$q = $pdo->prepare($sql);
$q->execute([$id]);
$array = $q->fetchAll(PDO::FETCH_ASSOC);
var_dump($array);
我想将此数据存储到一个数组中,然后在循环中使用此数组。我现在的问题是,我有如此大量的数据,阵列正在加载和加载,我的系统不堪重负。
有没有办法创建一个性能更好的海量数据数组?
fetchAll()
函数将整个记录映射到变量。
每次迭代映射一行会快得多
$q->execute([$id]);
$i = 0;
while ($row = $q->fetch()) {
// do something with $row
$i++;
}
请使用获取功能,而不是像下面那样获取所有内容:
while ($arr = $stmt->fetch()){
// do_other_stuff();
}
这将减少您系统的负载。
Please see this
我目前正在处理 12,000 行并将其编码为 JSON 数组,我认为这对我来说效果最好。
$sql = mysqli_query($dbconn, "SELECT * FROM data WHERE id = ?");
$rows = array();
while($r = mysqli_fetch_assoc($sql)) {
$rows[] = $r;
}
然后回显(或者在我的情况下回显 json_encode)它出来。
主要考虑的是:
- 这个table数据会进一步增加吗? (已经很大了:))
每次循环 50 万条记录不是 advisable/recommended。它肯定会影响 speed/performance.
我建议以下选项:
- 在 table 中放置一个字段以标识最高文件夹(类似于排序顺序字段)- 在需要时正确更新它。这样我们就可以先获取最高层的文件夹,如果有一个字段可以识别父文件夹,那么您就可以轻松地构建一棵树。
- 考虑一个 table 来存储最高层文件夹,外键指向其主文件夹 table。相应地更新它,以便您可以轻松识别最高文件夹。
PS: 你可以考虑使用 CRON 来处理数据并在需要时更新排序顺序。
我正在从我的 mySQL 数据库中选择大量数据:
$sql = "SELECT * FROM data WHERE id = ?";
$q = $pdo->prepare($sql);
$q->execute([$id]);
$array = $q->fetchAll(PDO::FETCH_ASSOC);
var_dump($array);
我想将此数据存储到一个数组中,然后在循环中使用此数组。我现在的问题是,我有如此大量的数据,阵列正在加载和加载,我的系统不堪重负。 有没有办法创建一个性能更好的海量数据数组?
fetchAll()
函数将整个记录映射到变量。
每次迭代映射一行会快得多
$q->execute([$id]);
$i = 0;
while ($row = $q->fetch()) {
// do something with $row
$i++;
}
请使用获取功能,而不是像下面那样获取所有内容:
while ($arr = $stmt->fetch()){
// do_other_stuff();
}
这将减少您系统的负载。
Please see this
我目前正在处理 12,000 行并将其编码为 JSON 数组,我认为这对我来说效果最好。
$sql = mysqli_query($dbconn, "SELECT * FROM data WHERE id = ?");
$rows = array();
while($r = mysqli_fetch_assoc($sql)) {
$rows[] = $r;
}
然后回显(或者在我的情况下回显 json_encode)它出来。
主要考虑的是:
- 这个table数据会进一步增加吗? (已经很大了:))
每次循环 50 万条记录不是 advisable/recommended。它肯定会影响 speed/performance.
我建议以下选项:
- 在 table 中放置一个字段以标识最高文件夹(类似于排序顺序字段)- 在需要时正确更新它。这样我们就可以先获取最高层的文件夹,如果有一个字段可以识别父文件夹,那么您就可以轻松地构建一棵树。
- 考虑一个 table 来存储最高层文件夹,外键指向其主文件夹 table。相应地更新它,以便您可以轻松识别最高文件夹。
PS: 你可以考虑使用 CRON 来处理数据并在需要时更新排序顺序。