Доброго времени суток. Помогите, пожалуйста, с оптимизацией запроса:
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, это ускорит.
Комментариев нет:
Отправить комментарий