sql >> Databasteknik >  >> RDS >> Mysql

finns det ett alternativ till att använda en for-loop för att infoga flera frågor

Se den här frågan hoppas att detta kommer att förbättra vår kod och hastighet.

Undvik att göra SQL-frågor i en loop

Ett vanligt misstag är att placera en SQL-fråga inuti en loop. Detta resulterar i flera rundresor till databasen och betydligt långsammare skript. I exemplet nedan kan du ändra loopen för att bygga en enda SQL-fråga och infoga alla dina användare på en gång.

foreach ($userList as $user) {

  $query = 'INSERT INTO users (first_name,last_name) VALUES("' . $user['first_name'] . '", "' . $user['last_name'] . '")';

  mysql_query($query);

  }

Istället för att använda en loop kan du kombinera data till en enda databasfråga.

$userData = array();

foreach ($userList as $user) {

    $userData[] = '("' . $user['first_name'] . '", "' . $user['last_name'] . '")';

}

$query = 'INSERT INTO users (first_name,last_name) VALUES' . implode(',', $userData);

mysql_query($query);


  1. Ska en databasanslutning vara öppen hela tiden eller bara öppnas när det behövs?

  2. MySQL - Max() returnerar fel resultat

  3. Vad är SQL Server-motsvarigheten till INET_ATON

  4. PostgreSQL-anslutningssträng med ODBC-drivrutin i C#, nyckelord stöds inte:drivrutin