После обновление Mysql до 5.6 мы столкнулись со следующей проблемой: клиенты не могут войти в свой кабинет. Оказалось, что при этом бесконечно долго выполняется запрос:
SELECT o.invoice_id, o.orders, o.unit, o.counts, o.price, o.fees_id
FROM docs_invoice_orders o
WHERE.
o.invoice_id IN.
(
SELECT d.id
FROM.
(docs_invoices d, docs_invoice_orders o).
LEFT JOIN users u ON (d.uid=u.uid)
LEFT JOIN admins a ON (d.aid=a.aid)
LEFT JOIN docs_invoice2payments i2p ON (d.id=i2p.invoice_id)
LEFT JOIN payments p ON (i2p.payment_id=p.id)
LEFT JOIN companies c ON (u.company_id=c.id)
WHERE u.uid='4448'
);
После анализа выяснили, что вложенный подзапрос ( IN (SELECT ….)) может возвращать набор 84000 записей, уникальными значением в котором только 3. Непонятным осталась роль таблицы docs_invoice_orders o ( docs_invoices d, docs_invoice_orders o). Она не участвует ни в каких соединениях в подзапросе и условиях WHERE и приводит к декартовому произведению. Удаление этой таблицы из списка выборки приводит к нормальной работе основного запроса
Проблема после обновления mysql до версии 5.6
-
- Site Admin
- Сообщения: 5749
- Зарегистрирован: Пт янв 28, 2005 3:11 pm
- Контактная информация:
Re: Проблема после обновления mysql до версии 5.6
спасибо поправили