And now for the sql question, if not done yet, you should index or reindex your table (the controlnum field is a good candidate to be in the index) and probably use some views in order to check only a part of your table, and simplify the work to perl.