2万件insert

参考
$ sudo yum install perl-CPAN
$ sudo cpan YAML DBD::mysql
$ sudo mysql -u root
mysql> set password for root@localhost=password('rootパスワード');
mysql> create database test;)
mysql> create table test(num int, name varchar(50));

# DBI モジュールの読みこみ
use DBI;
# データソース
$d = 'DBI:mysql:test';
# ユーザ名
$u = 'root';
# パスワード
$p = 'password';

# データベースへ接続
$dbh = DBI->connect($d, $u, $p);

# データベースの文字コードを設定を忘れずに
# これを忘れるとTEXT型のデータが文字化けする。
my $sth = $dbh->prepare("set character set utf8");
$sth->execute; 

# SQL文を用意

#####################################
my $i = 1;

my $sql = "insert into test (num, name) values (" . $i . ",'テスト')";

for($i=2; $i<=10000; $i++)
{
	#my $sql = "insert into test (num, name) values (" . $i . ",'テスト')";

	$sql = $sql .  ",(" . $i . ",'テスト')";

	print $i . "\n";
}

$sth = $dbh->prepare($sql);

# SQLを実行
$sth->execute;

#####################################
my $i = 10001;

my $sql = "insert into test (num, name) values (" . $i . ",'テスト')";

for($i=10002; $i<=20000; $i++)
{
	#my $sql = "insert into test (num, name) values (" . $i . ",'テスト')";

	$sql = $sql .  ",(" . $i . ",'テスト')";

	print $i . "\n";
}

$sth = $dbh->prepare($sql);

# SQLを実行
$sth->execute;

# ステートメントハンドルオブジェクトを閉じる
$sth->finish;
# データベースハンドルオブジェクトを閉じる
$dbh->disconnect;

password は設定したパスワードに変更。

$ time perl insert.pl

2.662秒。
Momonga7 1.616秒。


パフォーマンス比較