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



Reply via email to