А вы пробовали временные таблицы? Если выборки из подзапросов не большого размера, то можно просто через временные таблицы построить. На больших выборках, можно тоже временные таблицы, но они будут много скушивать с сервера памяти, и если её не хватит то производительность наоборот упадет. Но если у вас эти подзапросы постоянные, то может стоит сделать материализованные вьюхи, например? Или в принципе подумать над ненормализованной структурой бд.