use DBI; $dbh=DBI->connect("dbi:mysql:port=9306:database=test", "root", "") or die $DBI::errstr; $total_rows=100; $duplicates=1000; print "Creating table\n"; $dbh->do("drop table if exists bench1"); $dbh->do("create table bench1 (id1 int NOT NULL, id2 int NOT NULL, dupnum int NOT NULL, index ix_id12 (id1,id2), index ix_id2 (id2)) ENGINE=Falcon"); print "Inserting in reverse order: $total_rows unique rows, $duplicates of each\n"; $query="insert into bench1 (id1,id2,dupnum) values "; for ($i=0 ; $i < $total_rows ; $i += 2) { $fieldvalue = $total_rows-1-$i; for ($j = 1; $j <= $duplicates ; $j++) { $sth = $dbh->do($query . "(" . ($fieldvalue) . "," . ($fieldvalue) . "," . ($j) . ")" ) or die $DBI::errstr; } if ($duplicates > 500) { $j -= 1; $total = $j * ($i + 1); print "$total records: $j inserted with id1 = $fieldvalue\n"; } $fieldvalue = $i + 10; for ($j = 1; $j <= $duplicates ; $j++) { $sth = $dbh->do($query . "(" . ($fieldvalue) . "," . ($fieldvalue) . "," . ($j) . ")" ) or die $DBI::errstr; } if ($duplicates > 500) { $j -= 1; $total = $j * ($i + 2); print "$total records: $j inserted with id1 = $fieldvalue\n"; } } print "Retrieving inserted data from id1:\n"; $stmt=$dbh->prepare("select * from bench1 where id1=?"); $ok=0; $nok=0; for ($i=0; $i < $total_rows; $i += 2) { $fieldvalue = $total_rows-1-$i; $n=$stmt->execute($fieldvalue) or die $DBI::errstr; if ($n==$duplicates) { #print "ok $n\n"; $ok++; } else { print "rows for id1=$fieldvalue not found but they exist $n\n"; $nok++; } $fieldvalue = $i + 10; $n=$stmt->execute($fieldvalue) or die $DBI::errstr; if ($n==$duplicates) { #print "ok $n\n"; $ok++; } else { print "rows for id1=$fieldvalue not found but they exist $n\n"; $nok++; } } print "Retrieving inserted data from id2:\n"; $stmt=$dbh->prepare("select * from bench1 where id2=?"); $ok=0; $nok=0; for ($i=0; $i < $total_rows; $i += 2) { $fieldvalue = $total_rows-1-$i; $n=$stmt->execute($fieldvalue) or die $DBI::errstr; if ($n==$duplicates) { #print "ok $n\n"; $ok++; } else { print "rows for id2=$fieldvalue not found but they exist $n\n"; $nok++; } $fieldvalue = $i + 10; $n=$stmt->execute($fieldvalue) or die $DBI::errstr; if ($n==$duplicates) { #print "ok $n\n"; $ok++; } else { print "rows for id2=$fieldvalue not found but they exist $n\n"; $nok++; } } $half = $total_rows / 2; print "Deleting where id1==$half\n"; $query="delete from bench1 where id1 = $half"; $sth = $dbh->do($query) or die $DBI::errstr; $stmt->finish(); $dbh->disconnect(); print "Total ok=$ok nok=$nok\n";