всем доброго дня
имеется запрос вида (возможно несколько громоздкий пример но суть думаю будет понятна):
SELECT * FROM `news`,`material` WHERE `news`.`materialID` = `material`.`materialID` and `news`.`newsDir` IN (SELECT `page`.`pageID` FROM `page`,`dir_page`,`dir`,`material` WHERE `dir`.`dirID` = \'11\' and `dir`.`dirID` = `dir_page`.`dirID` and `page`.`pageID` = `dir_page`.`pageID` and `dir_page`.`dirpPublish` = \'on\' and `page`.`materialID` = `material`.`materialID` and `material`.`materialPublish` = \'on\') ORDER by `news`.`newsDate` DESC
время выполнения запроса (при отключенном кешировании) порядка 2!!! секунд. в базе примерно 40 000 записей. тотже самый запрос но разбитый на два, тоесть сначала ОТДЕЛЬНО выполняем вложенный запрос а потом с его результатами выполняем основной, выполняется уже за десятые доли секунды. собственно вопрос, есть-ли другие пути чтобы получить тот-же самый результат одним запросом но при этом не ждать несколько секунд на его выполнение ?