У меня есть что-то похожее на следующее:
SELECT c.id
FROM contact AS c
WHERE c.id IN (SELECT s.contact_id
FROM sub_table AS s
LEFT JOIN contact_sub AS c2 ON (s.id = c2.sub_field)
WHERE c2.phone LIKE '535%')
ORDER BY c.name
Проблема в том, что запрос занимает очень очень очень много времени (> 2 минуты), но если я возьму подзапрос, запусту его отдельно, добавлю идентификаторы и вставлю их в основной запрос, он будет выполняться гораздо быстрее, чем 1 во-вторых, включая извлечение и взятие данных.
Я проверил объяснения, как методы, так и ключи используются соответствующим образом и одинаково. Подзапрос не возвращает более 200 идентификаторов.
Что может заставить метод подзапроса занимать намного больше времени?
Кстати, я знаю, что приведенный выше запрос может быть написан с помощью объединений, но запрос у меня не может быть - это просто упрощенная версия.
Использование MySQL 5.0.22.