Страницы

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

понедельник, 16 декабря 2019 г.

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

#оптимизация #mysql


Доброго времени суток. Помогите, пожалуйста, с оптимизацией запроса:

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 секунд.
Заранее спасибо.
    


Ответы

Ответ 1



Попробуйте так 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, это ускорит.

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

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