Select recordIDs for Bill of Materials
Here are a couple of Questions:


Have you tried reverse order in your joins?  I.e. start with PS=&gt;PSH=&gt;Item.
Have you tried inner joins versus left join?  Could see speed improvement (less data for sure)
Is there any way to recurse only on item?  In other words, can you get PS1.PST_IMA_RecordID from your Item row?  If so, then you would only recurse on one table.