
When solving a complicated puzzle, it is always good to break it up into pieces and take it from there.
When it involves a database SELECT and an application that is loading at a crawl - take the SQL apart clause by clause. Start at the FROM clause. Take a long hard look at your table JOINs. Eliminate. Rearrange. Cross your fingers and watch it go!