I have about three work-arounds for this problem, but all of them are time
consuming and a big drain on resources. I was wondering if any of you have
come up with an easy way to compare the contents of a list (array) against a
table (Perl:DBI:MySQL).
At the risk of looking like an idiot, here is one of my previous
work-arounds:
I have a list of userid's (@compare_array) that i want to compare to my
subscription table.
$primer=$dbh->prepare("SELECT count(*) FROM subscription where userid=? ");
foreach $userid (@compare_array){
$primer->execute($userid);
if ($primer->err()){$message.="Problem on Select".$primer->errstr();
&shellout; exit;}
($count)=$primer->fetchrow_array();
if($count > 0){#there is a match
}else{#there was no match
}
}
The above system WORKS, and works pretty well for tables of <1000 records.
But when I'm dealing with 10,000 or 50,000 records, this search becomes and
incredible drain.
Is there a way to perform this operation without running 25,000 SELECTs when
@compare_array has that many ID's?
Thank you,
Richard Still
Oakbox.com