Вот запрос, который загружается 400 секунд. Я пробовал в MySQL напрямую. Если я попробую подзапросы по отдельности, все они будут выполнены менее чем за 0,01 секунды. запрос после объединения всех выполняется за 40 секунд. запрос перед объединением всех выполняется за 1 секунду.
Таблица продаж и таблица продаж содержат около 12 тысяч записей каждая. Цель этого запроса - когда поставщик = партнер в таблице продаж, тогда мне нужно добавить строки из таблицы продаж, идентификатор которых соответствует критериям поиска в таблице продаж.
(
SELECT 'no' AS aff, ss.orderid,ss.saletype,ss.price,ss.salests
FROM sales ss
WHERE 1=1 AND
( ss.vendor='3kpertrade' OR ss.affiliate='3kpertrade')
)
UNION ALL
(
SELECT 'yes' AS aff, sf.orderid,sf.saletype,sf.price,sf.salests
FROM salesaff sf
WHERE sf.vendor=sf.affiliate AND
sf.orderid IN (SELECT ss.orderid from sales ss WHERE 1=1
AND ( ss.vendor='3kpertrade' OR ss.affiliate='3kpertrade')
GROUP BY ss.orderid )
)
ORDER BY salests DESC
sales(vendor,orderid)
,sales(affiliate,orderid)
и один наsalesaff(vendor,affiliate,orderid)
могут улучшить ситуацию. - person Mihai   schedule 28.02.2014