Страницы

Поиск по вопросам

суббота, 27 октября 2018 г.

Оптимизация left join

Доброго времени суток. Помогите, пожалуйста, с оптимизацией запроса:
SELECT * , b.`id` AS bid, u.`id` AS uid, cd.`open_n` , cd.`close_n` FROM `bills` AS b LEFT JOIN `users` u ON u.`id` = b.`author` LEFT JOIN `close_docs` cd ON cd.`bill_id` = b.`id` WHERE b.`check` != "0000-00-00 00:00:00" LIMIT 1303 , 30
EXPLAIN EXTENDED выдает:

В close_docs не всегда есть строки, соответствующие b.id В bills и close_docs около 3500 записей, запрос выполняется около 25 секунд. Заранее спасибо.


Ответ

Попробуйте так Select *, b.`id` AS bid, u.`id` AS uid, cd.`open_n` , cd.`close_n` from `bills` as b, `users` as u, `close_docs` as cd Where b.`check`!= "0000-00-00 00:00:00" and u.`id`=b.`autor` and cd.`bill_id` = b.`id` Создайте внешний ключ на cd.bill_id = b.id, это ускорит.

Комментариев нет:

Отправить комментарий