• I've had similar issues to this where data growth on the system caused a previously high performing query to become very slow.  On investigation I found that it was doing table scans of some large tables in a situation where it should have been doing nested loops as only a very small number of rows were needed.

    To fix it I specified optimizer hints forcing the query to use specific indexes which forced the query plan back to the prefered nested loops.  Not a perfect solution as often we don't have time to rewrite or hint our queries to get a specific query plan but it does work.