SELECT * FROM my_table WHERE id_column IN (?, ?, ?, ?) #### my @sths; while (<>) { my @values = split ' ', $_; $sths[@values] ||= $dbh->prepare("SELECT * FROM my_table WHERE id_column IN (" . join(', ', ('?') x @values) . ')'); $sths[@values]->execute(@values); # ... }