簡體   English   中英

如何從大量數據創建數組?

[英]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(); 
}

這將減少系統的負載。

請看這個

我目前正在處理12,000行並將其編碼為JSON數組,我認為這對我來說是最好的。

$sql = mysqli_query($dbconn, "SELECT * FROM data WHERE id = ?");

$rows = array();
    while($r = mysqli_fetch_assoc($sql)) {
    $rows[] = $r;
    }

然后回顯(或者在我的情況下回顯json_encode)。

要考慮的主要事項是:

  1. 該表數據會進一步增加嗎? (已經很大了:))

不建議/建議每次循環500k條記錄。 它肯定會影響速度/性能。

我建議以下選擇:

  1. 在表格中放置一個字段以標識最高的文件夾(類似於“排序順序”字段)-隨時根據需要正確更新。 這樣我們就可以首先獲取最高的文件夾,並且如果有一個字段可以標識父文件夾,那么您可以輕松地構建一棵樹。
  2. 考慮一個表,該表存儲帶有主表外鍵的最高文件夾。 相應地更新此內容,以便您可以輕松確定最高文件夾。

PS:您可以考慮使用CRON處理數據並根據需要更新排序順序。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM