If execute is taking a long time, that's an indication that your query is problematic. Remember, the database has to identify the result set before it will start to return any rows. Try running your query interactively (using command line or MySQL/CC or phpMyAdmin or something similar). If it's slow, you'll need to fix that first.
It's impossible to tell without knowing the data model and schema, but just from your variable names, I'm guessing you're building a cartesian product from a many-to-many relationship. That can produce a huge number of rows, so make sure you've restricted the set that you're selecting from (in other words, add more conditions to your where clause). If you can't restrict it, you may be SOL: you're asking for a ton of data, but you don't want to take any time to retrieve it, which is an impossible combination.