Mysql
 sql >> Database >  >> RDS >> Mysql

Riprogettazione del codice applicativo per ridurre n. di accessi al database dal punto di vista delle prestazioni

sul tuo ciclo while costruisci solo una stringa di query ed esegui l'istruzione fuori ciclo. Quindi qualcosa del genere dovrebbe funzionare (non sono sicuro della sintassi poiché è passato molto tempo che ho scritto php ma dovrebbe funzionare:

public function initiateInserts()
{
    //Open Large CSV File(min 100K rows) for parsing.
    $this->fin = fopen($file,'r') or die('Cannot open file');

    //Parsing Large CSV file to get data and initiate insertion into schema.
    $query = "";
    while (($data=fgetcsv($this->fin,5000,";"))!==FALSE)
    {
        $query = $query . "INSERT INTO dt_table (id, code, connectid, connectcode) 
                 VALUES (" . $data[0] . ", " . $data[1] . ", " . $data[2] . ", " . $data[3] . ")";
    }
     $stmt = $this->prepare($query);
     // Execute the statement
     $stmt->execute();
     $this->checkForErrors($stmt);
}