powered by simpleCommunicator - 2.0.61     © 2026 Programmizd 02
Целевая тема:
Создать новую тему:
Автор:
Закрыть
Цитировать
Форумы / MySQL [игнор отключен] [закрыт для гостей] / Почему inner join внутри подзапроса так сильно замедляет весь запрос?
2 сообщений из 2, страница 1 из 1
Почему inner join внутри подзапроса так сильно замедляет весь запрос?
    #38383718
Jacobian
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Привет всем! Подскажите, почему INNER JOIN внутри подзапроса может так сильно замедлять весь запрос? Сейчас запрос выглядит так:

SELECT o.id_field, attr_73206_ AS attr_73270_
FROM object_73130_ f1
LEFT OUTER JOIN (
SELECT id_field, attr_73206_ FROM (
SELECT m.id_field, t0.attr_73102_ AS attr_73206_ FROM object_73200_ o
INNER JOIN master_slave m ON (m.id_object = 73130 OR m.id_object = 73290) AND (m.id_master = 73200 OR m.id_master = 73354) AND m.id_slave_field = o.id
INNER JOIN object_73101_ t0 ON t0.id = o.attr_73206_
ORDER BY o.id_order
) AS o GROUP BY o.id_field
) AS o ON f1.id = o.id_field

На сравнительно небольших таблицах, не превышающих 2 тыс. записей он выполняется за 12 секунд. Сам подзапрос выполняется за доли секунды. И что самое интересное, если переписать запрос и сделать так:

SELECT t0.attr_73102_ AS attr_73270_
FROM object_73130_ f1
LEFT OUTER JOIN (
SELECT id_field, attr_73206_ FROM (
SELECT m.id_field, attr_73206_ FROM object_73200_ o
INNER JOIN master_slave m ON (m.id_object = 73130 OR m.id_object = 73290) AND (m.id_master = 73200 OR m.id_master = 73354) AND m.id_slave_field = o.id
ORDER BY o.id_order
) AS o GROUP BY o.id_field
) AS o ON f1.id = o.id_field
LEFT JOIN object_73101_ t0 ON t0.id = o.attr_73206_

то он выполняется за доли секунды. То есть все дело в INNER JOIN внутри подзапроса. Так вот, почему он так сильно влияет на весь запрос, увеличивая время исполнения с долей секунды до 12 секунд?
...
Рейтинг: 0 / 0
Почему inner join внутри подзапроса так сильно замедляет весь запрос?
    #38383785
tanglir
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Jacobian, а планы, планы-то где?
Без них можно только предполагать, что в первом случае таблица, которую вы лефтджойните ("о", внешняя), получается большой, а во втором - маленькой. А поскольку это временная таблица, то время её левого присоединения может очень сильно зависеть от кол-ва записей в ней.
...
Рейтинг: 0 / 0
2 сообщений из 2, страница 1 из 1
Форумы / MySQL [игнор отключен] [закрыт для гостей] / Почему inner join внутри подзапроса так сильно замедляет весь запрос?
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


Просмотр
0 / 0
Close
Debug Console [Select Text]