Mysql
 sql >> Cơ Sở Dữ Liệu >  >> RDS >> Mysql

Lấy 190 nghìn hàng từ MySQL bằng PHP, trang trống? Bộ nhớ hoặc bộ đệm?

Bỏ Kohana sang một bên, bởi vì tôi chưa bao giờ sử dụng nó, những gì bạn hiện đang làm về cơ bản là thế này:

$result = mysql_query(...);
$data   = array();
while ($row = mysql_fetch_assoc($result)) {
    $data[] = $row;
}

I E. bạn đang nhận tất cả dữ liệu từ MySQL với mysql_fetch_assoc và lưu trữ tất cả chúng trong bộ nhớ của PHP bằng cách đẩy nó vào $data . Điều đó có nghĩa là PHP cần có đủ bộ nhớ để lưu trữ tất cả dữ liệu cùng một lúc, điều mà PHP không có.

Những gì bạn muốn làm là tìm nạp một hàng kết quả từ MySQL, làm điều gì đó với nó, sau đó chuyển sang hàng tiếp theo mà không cần lưu trữ mọi thứ trong bộ nhớ cùng một lúc:

$result = mysql_query(...);
while ($row = mysql_fetch_assoc($result)) {
    echo $row['foo'];
}

Và không, vui lòng không sử dụng API mysql_ không được dùng nữa, nó chỉ là ví dụ mẫu số chung lớn nhất ở đây. Ngoài ra, phải có một cách tốt hơn để làm bất cứ điều gì bạn muốn làm hơn là cố gắng tìm nạp và xuất 190.000 hàng cùng một lúc.



  1. Database
  2.   
  3. Mysql
  4.   
  5. Oracle
  6.   
  7. Sqlserver
  8.   
  9. PostgreSQL
  10.   
  11. Access
  12.   
  13. SQLite
  14.   
  15. MariaDB
  1. Tại sao tôi có NullPointerException ở đây?

  2. thiết lập phiên bản cơ sở dữ liệu đích để di chuyển bàn làm việc mysql

  3. Liên kết bảng HTML với bảng MySQL

  4. Thứ tự lập chỉ mục tổng hợp InnoDB và hiệu suất INSERT

  5. Nào là nhanh nhất? CHỌN SQL_CALC_FOUND_ROWS TỪ `bảng` hoặc CHỌN COUNT (*)