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

làm thế nào để tối ưu hóa mã php chèn sql này?

Cảm ơn bạn rất nhiều tadman Hanlet Escaño Uueerdo Julie Pelletier Solarflare vì đã giúp tôi trong các ý kiến.

Tôi đã thực hiện 3 thay đổi khác nhau trong mã PHP của mình bằng cách sử dụng các phương pháp tiếp cận mà bạn đề xuất trong các nhận xét, sau đó tôi đã kiểm tra kết quả và đây là kết quả kiểm tra.

Kết luận của 3 bài kiểm tra: như tadman đề xuất, khóa nằm trong TẢI THÔNG TIN DỮ LIỆU . nó đã giảm đáng kể thời gian thực thi xuống dưới 7 giây và đây là 3 bài kiểm tra.

MÃ GỐC: ~ 26 phút

THỬ NGHIỆM 1: ~ 34 phút

(as Uueerdo đã đề xuất tôi xóa echo câu lệnh và bộ đếm hàng từ vòng lặp)

while(!feof($filehandle)){
// $x++; // commented out
//echo $x . ":  "; // commented out
$fileline = fgets($filehandle);
$fields = explode("\t", $fileline);
$query = "INSERT INTO products(hs,arabicname,englishname) VALUES(" . "'" . str_replace("'", ".", $fields[0]) ."'," . "'". str_replace("'", ".", $fields[1]) . "'," . "'". str_replace("'", ".", $fields[2]) . "');"; 
$result = $conn->query($query); 
/* // commented out
if(!$result) {echo  $conn->error . "</br>";}
}else{echo $result . "</br>";}
*/};

THỬ NGHIỆM 2: ~ 7 giây

(Như tadman cho biết tôi đã tìm kiếm TẢI THÔNG TIN DỮ LIỆU và nó cực kỳ mạnh mẽ

//replace the entire loop with this simple query
$query = "LOAD DATA LOCAL INFILE'" . 
addslashes("C:\\xampp\\htdocs\\bots\\impandexp\\imports.txt")
. "' INTO TABLE imports FIELDS TERMINATED BY '\t' LINES TERMINATED BY
'\r\n'(product_hs,counteryname,units,weight,value) SET  year = '2014';";
 $result = $conn->query($query);

THỬ NGHIỆM 3: ~ 5 giây

Nó cũng giống như thử nghiệm 2 ngoại trừ việc tôi tìm thấy các mẹo hữu ích trên cùng một trang mà tadman đưa ra, giúp tối đa hóa tốc độ.

Tải dữ liệu hàng loạt cho Bảng InnoDB

// turning off index checks that might slows down bulk data insertion
$query = "SET foreign_key_checks=0;";
$conn->query($query);
$query = "SET unique_checks=0;";
$conn->query($query);
$query ="SET autocommit=0;";
$conn->query($query);

$query = "LOAD DATA LOCAL INFILE'" . addslashes("C:\\xampp\\htdocs\\bots\\impandexp\\imports.txt") . "' INTO TABLE imports FIELDS TERMINATED BY '\t' LINES TERMINATED BY '\r\n'(product_hs,counteryname,units,weight,value) SET  year = '2014';";
$result = $conn->query($query);
echo $result . "</br>";
// turning them on again
$query = "SET foreign_key_checks=1;";
$conn->query($query);
$query = "SET unique_checks=1;";
$conn->query($query);
$query ="COMMIT;";
$conn->query($query);



  1. Database
  2.   
  3. Mysql
  4.   
  5. Oracle
  6.   
  7. Sqlserver
  8.   
  9. PostgreSQL
  10.   
  11. Access
  12.   
  13. SQLite
  14.   
  15. MariaDB
  1. Mysql thêm người dùng để truy cập từ xa

  2. mysql group_concat không mang lại toàn bộ dữ liệu

  3. Truy vấn cơ sở dữ liệu CodeIgniter sử dụng truy vấn () với mệnh đề IN

  4. Fluent Nhibernate:Không thể tạo kết nối cơ sở dữ liệu với MySQL

  5. java.sql.SQLException Chỉ mục tham số nằm ngoài phạm vi (1> số tham số, là 0)