2012-05-04 1 views
0

J'ai une base de données MySQL dont je voudrais tester les performances. Je veux insérer environ 5 millions d'enregistrements dans une table avec une clé primaire auto-incrémentée. Existe-t-il un moyen facile de le faire rapidement avec SQL? Je sais que je peux canaliser dans un fichier .sql, mais tout ce que je veux vraiment faire est d'insérer les mêmes données identiques (mais avec un PK différent), 5 millions de fois.SQL pour insérer des millions d'enregistrements fictifs dans la base de données MySQL

Répondre

2

Vous pouvez insérer NULL comme valeur du PK ou simplement ne pas le spécifier dans la liste des colonnes dans votre instruction d'insertion. De cette façon, il est automatiquement incrémenté.

for ($i=0; $i<5000000; $i++) { 
    "INSERT INTO table (id,name) values (NULL,'somename')"; // obviously in form of $dbh->() something 
} 
+0

Cela ne me dit pas comment je referais ce 5 millions de fois cependant. –

+0

Est-ce que cela a plus de sens? –

1

Cela peut ne pas être un bon test de performance, sous forme de lignes identiques ne seront pas créer indicies avec des valeurs régulièrement réparties pour tout sauf le PK, donc la plupart des requêtes ne seront pas attendu la preuve du rendement.

J'utiliser un outil de génération de données de test comme Faker (variétés rubis et Perl existe):

http://faker.rubyforge.org/

+0

Totalement d'accord avec cela. –

Questions connexes