Mysql
 sql >> डेटाबेस >  >> RDS >> Mysql

इस एसक्यूएल प्रविष्टि PHP कोड को अनुकूलित कैसे करें?

बहुत-बहुत धन्यवाद tadman और Hanlet Escaño और Uueerdo और जूली पेलेटियर और Solarflare टिप्पणियों में मेरी मदद करने के लिए।

मैंने टिप्पणियों में आपके द्वारा सुझाए गए तरीकों का उपयोग करके अपने PHP कोड में 3 अलग-अलग बदलाव किए, फिर मैंने परिणामों का परीक्षण किया और यहां परीक्षण के परिणाम दिए गए हैं।

तीन परीक्षणों का निष्कर्ष: जैसा कि टैडमैन ने सुझाव दिया था, कुंजी LOAD DATA INFILE . इसने नाटकीय रूप से निष्पादन समय को 7 सेकंड से कम कर दिया, और ये 3 परीक्षण हैं।

मूल कोड: ~ 26 मिनट

परीक्षा 1 : ~ 34 मिनट

(जैसा Uueerdo सुझाव दिया कि मैंने echo को हटा दिया है बयान और पंक्तियाँ लूप से काउंटर)

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>";}
*/};

परीक्षा 2 : ~ 7 सेकंड

(जैसा tadman ने कहा कि मैंने LOAD DATA INFILE की खोज की और यह बहुत शक्तिशाली था

//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);

परीक्षा 3: ~ 5 सेकंड

यह परीक्षण 2 के समान ही था, सिवाय इसके कि मुझे उसी पृष्ठ पर उपयोगी टिप्स मिले, जो टैडमैन देते हैं, जो कि गति को अधिकतम करने में मदद करते हैं।

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. बहुत लगातार /opt/lampp/bin/mysql.server:264:किल:ऐसी कोई प्रक्रिया नहीं है। Xampp/उबंटू 16.04

  2. mysql json में मान द्वारा सरणी तत्व निकालें

  3. MySql डेटाबेस में संग्रहीत एक BLOB छवि कैसे प्रदर्शित करें?

  4. एचटीएमएल फॉर्म इको'एड वैरिएबल बदल रहा है लेकिन डेटाबेस नहीं?

  5. SQL INSERT से चयन करें