如何向MySQL数据库中插入100万个条目?

如何向MySQL数据库中插入100万个条目?,mysql,sql,perl,Mysql,Sql,Perl,我想在我的数据库上用一个真实的“负载”测试我的SQL查询(更新查询)的速度。我对DB比较陌生,我做的查询比以前复杂得多,我被人们谈论性能时吓到了,比如“3000条记录更新30秒”等等。所以我想做一个具体的实验,展示我在生产中的性能 为了实现这一点,我想将10k、100k、1M、10M记录添加到我的数据库中,然后运行我的查询 我的问题是,我如何才能做到这一点?我有一个“name”主键字段,它必须是唯一的,并且如果你想优化查询,你应该查看MySQL的EXPLAIN语句。 要填充您的数据库,我建议您编

我想在我的数据库上用一个真实的“负载”测试我的SQL查询(更新查询)的速度。我对DB比较陌生,我做的查询比以前复杂得多,我被人们谈论性能时吓到了,比如“3000条记录更新30秒”等等。所以我想做一个具体的实验,展示我在生产中的性能

为了实现这一点,我想将10k、100k、1M、10M记录添加到我的数据库中,然后运行我的查询


我的问题是,我如何才能做到这一点?我有一个“name”主键字段,它必须是唯一的,并且如果你想优化查询,你应该查看MySQL的EXPLAIN语句。 要填充您的数据库,我建议您编写自己的litte PHP脚本或查看此脚本

关于您的编辑: 您可以使用perl生成一个大文本文件,然后使用MySQL CLI将该文件加载到表中,有关更多信息,请参阅:

我不确定如何仅使用MySQL来实现这一点,但如果您可以访问PHP,请使用以下方法:

<?php

    $start = time();
    $interval = 10000000; // 10M
    $con = mysql_connect( 'server', 'user', 'pass' );
    mysql_select_db( 'database' );

    for ( $i = 0; $i < $interval; $i++ )
    {

        mysql_query( 'INSERT INTO TABLE (fields) VALUES (values)', $con );

    }

    $endt = time();
    $diff = ( $endt - $start );
    print( "{$interval} queries took " . date( 'g:i:s', $diff ) . " to execute." );

?>

您只是想预填充数据库,以便运行查询,而不是对初始插入过程进行基准测试


在这种情况下,只需生成以制表符分隔的文件形式的输入数据,并用于填充数据库。

很遗憾,我不懂perl,希望其他人能帮助您解决这个问题。我已编辑了我的回答,也许这就是您要找的解决方案。此外,在一个调用中批量插入多个内容。这样,当您的代码工作时,db可以工作,这将缩短所需的时间。