как оптимизировать SQL запрос

Vitaluxa
Дата: 22.01.2013 21:35:48
SELECT * FROM `wp_posts` WHERE `ID` IN(
SELECT `meta_value` FROM `wp_postmeta` WHERE `meta_key`='_menu_item_object_id' AND `post_id` IN(
SELECT `post_id` FROM `wp_postmeta` WHERE `meta_value`=(
SELECT `post_id` FROM `wp_postmeta` WHERE `meta_value`=(
SELECT `ID` FROM `wp_posts` WHERE `post_title`='".$title."' AND `post_type`='page' AND `post_status`='publish')))) ORDER BY `ID`"
miksoft
Дата: 22.01.2013 21:43:27
Первое и главное, имхо, избавиться от всех IN (SELECT ...). Например, заменив их JOIN-ами.
Да и вообще логика у запроса странная. Попробуйте объяснить ее словами и демонстрацией стрктуры таблиц.
Vitaluxa
Дата: 22.01.2013 21:54:54
Подскажите как пожалуйста!
Я новичок в этом..
Как SELECT IN заменить JOINом?
miksoft
Дата: 22.01.2013 22:00:58
Vitaluxa
Как SELECT IN заменить JOINом?
Зависит от логики запроса. О ней я вас уже спрашивал.
Vitaluxa
Дата: 22.01.2013 22:11:58
Этот запрос строит футер меню на wordpress вот сайт - fxoffice.eu
у нас есть Parent Title для начала надо знать его ID

Потом в таблице wp_post_meta надо 3 раза делать SELECT чтоб получить нужные meta_value которые являются
суб категориями parent title.

Потом строится 1 блок в меню.
И таких блоков 5
вообщем только из за этого запроса сайт тормозит.
вот..
Vitaluxa
Дата: 22.01.2013 22:19:02
Ух ты получилось!!!

SELECT * FROM `wp_posts` AS `wps1`
JOIN `wp_postmeta` AS `wp1` ON `wp1`.`meta_value`=`wps1`.`ID` AND `wp1`.`meta_key`='_menu_item_object_id'
JOIN `wp_postmeta` AS `wp2` ON `wp1`.`post_id`=`wp2`.`post_id`
JOIN `wp_postmeta` AS `wp3` ON `wp2`.`meta_value`=`wp3`.`post_id`
JOIN `wp_posts` AS `wps` ON `wps`.`ID`=`wp3`.`meta_value` AND `wps`.`post_title`='Compare Brokers' AND `wps1`.`post_type`='page' AND `wps1`.`post_status`='publish'