Когда я изолирую этот запрос:
SELECT `Tagged`.`contact_id`
FROM contacts_tags AS Tagged LEFT JOIN tags AS Tag ON (`Tagged`.`tag_id` = `Tag`.`id`)
WHERE `Tag`.`id` = 137;
я получаю:
+------------+
| contact_id |
+------------+
| 3519 |
| 17080 |
+------------+
Но когда я объединяю его с большим запросом, используя "IN", я получаю некоторый рекурсивный цикли моя база данных начинает потреблять вычислительную мощность до истечения времени ожидания.
SELECT `Contact`.*
FROM `contacts` AS `Contact`
WHERE `Contact`.`id` in
(SELECT `Tagged`.`contact_id`
FROM contacts_tags AS Tagged LEFT JOIN tags AS Tag ON (`Tagged`.`tag_id` = `Tag`.`id`)
WHERE `Tag`.`id` = 137 );
Это просто продолжает работать, пока я не перезагружу сервер.
Но тогда Это работает, когда я вручную перечисляю первый ответ на запрос:
SELECT `Contact`.*
FROM `contacts` AS `Contact`
WHERE `Contact`.`id` in
(3519, 17080);
В чем разница?