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

PHP PDO chèn nhiều (10000+) hàng giống nhau bằng bindParam. Thực hành tốt?

Bạn không cần phải bindParam () trong mỗi lần lặp lại của vòng lặp. BindParam () khiến các biến $ v1, $ v2, v.v. bị ràng buộc bởi tham chiếu , vì vậy tất cả những gì bạn cần làm là thay đổi giá trị của các biến này và sau đó thực hiện lại truy vấn. Điều đó có thể cắt giảm chi phí.

Ngoài ra, bạn có thể tránh gọi intval () mọi lúc qua vòng lặp. Chỉ cần đảm bảo $ cloneCount được ép buộc thành số nguyên một lần , trước vòng lặp. Đó là một cải tiến rất nhỏ, nhưng đó là một phương pháp hay.

$cloneCount = (int) $cloneCount;

... 9 other bindParam
$insertG->bindParam(':v1', $v1, PDO::PARAM_STR);
$insertG->bindParam(':v2', $v2, PDO::PARAM_INT);

for ($i=0; $i < $cloneCount; $i++) 
{
  $v1 = /* something */
  $v2 = /* something */
  $insertG->execute();
}

Bạn cũng nên tránh tự động gửi. Giảm chi phí giao dịch của MySQL trên mỗi lần thực thi câu lệnh bằng cách bắt đầu một giao dịch rõ ràng , chèn vài nghìn hàng và sau đó thực hiện giao dịch.

Nhưng cách tốt nhất để tăng tốc độ CHÈN hàng loạt hàng nghìn hàng tương tự vào một bảng duy nhất là sử dụng TẢI THÔNG TIN ĐỊA PHƯƠNG DỮ LIỆU thay vì CHÈN. Điều này chạy nhanh hơn 10-20 lần so với CHÈN từng hàng, ngay cả khi bạn sử dụng tham số, giao dịch, chèn nhiều hàng và bất kỳ thủ thuật nào khác mà bạn có thể nghĩ ra.

Ngay cả khi bạn phải sử dụng PHP để ghi dữ liệu của mình vào tệp .CSV vào đĩa và sau đó sử dụng TẢI DỮ LIỆU ĐỊA PHƯƠNG INFILE trên tệp đó, nó vẫn nhanh hơn nhiều.

Xem thêm Tốc độ của câu lệnh CHÈN trong hướng dẫn sử dụng MySQL để biết thêm các mẹo.



  1. Database
  2.   
  3. Mysql
  4.   
  5. Oracle
  6.   
  7. Sqlserver
  8.   
  9. PostgreSQL
  10.   
  11. Access
  12.   
  13. SQLite
  14.   
  15. MariaDB
  1. Làm thế nào để có được tổng số hàng được tìm thấy mà không cần xem xét giới hạn trong PDO?

  2. Cách đăng dữ liệu lên cơ sở dữ liệu bằng cách sử dụng API Tìm nạp trong React.js

  3. Một truy vấn SQL để chọn cho đến khi SUM (users_count) đạt đến 1000

  4. MySql nhận số lượng từng loại phần tử trong cloumn

  5. Cách xóa các chữ số khỏi cuối chuỗi bằng SQL