Bonjour a tous,
Je dois sauvegarder dans un fichier le résultat d'un requête mySql qui me renvoie 3 millions de lignes.
Voici le code que j'utilise:
Cela fonctionne très bien, mais ça prend presque une minute. La question est simple: avez vous une idée pour améliorer les performances?
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9
10 $fh = fopen($csv_files[$i], 'w'); $sql = "SELECT UNIX_TIMESTAMP(`TIME2`) AS the_time2, `speed` AS speed, `friction` AS friction FROM `$theMnemo` WHERE `time` >= '$starts[$i]' AND `time` <= '$stops[$i]' AND NOT `speed` = 0 AND NOT `friction` = 0"; $req = mysql_unbuffered_query($sql); while( $data = mysql_fetch_assoc($req) ) { fwrite($fh, $data['the_time2']."\t".$data['speed']."\t".$data['friction']."\n"); $nb_points_array[$i]++; } fclose($fh);
Etant sous linux, j'ai essayé d’écrire le fichier dans la RAM (tmpfs) plutôt que sur le disque mais ça ne change rien.
Pendant que le code PHP tourne, le processus MySQL a le statut "Sending data".
Les serveurs sql et http/php sont sur la même machine.
Merci d'avance!!!
Partager