Единственная разница в этих sql-запросах - это параметр record_id (это то, как я пролистываю весь набор результатов).Таблицы myisam.Первый запрос работает хорошо, а второй ужасно медленно.Любая идея, почему это будет?
Этот запрос отлично работает
explain select r.record_id, r.oai_datestamp, r.format_id, r.status, x.xml, max(u.date_updated) as date_updated
from marcnormalization.records r,
marcnormalization.records_xml x,
marcnormalization.record_updates u
where r.record_id = x.record_id
and (r.record_id > 1802000 or 1802000 is null)
and r.record_id = u.record_id
and (u.date_updated > '1960-10-19 10:18:52.0' or '1960-10-19 10:18:52.0' is null)
and u.date_updated <= '2010-10-07 10:18:52.0'
group by u.record_id
order by u.record_id
limit 1000;
этот запрос очень медленный (создает временную таблицу)
explain select r.record_id, r.oai_datestamp, r.format_id, r.status, x.xml, max(u.date_updated) as date_updated
from marcnormalization.records r,
marcnormalization.records_xml x,
marcnormalization.record_updates u
where r.record_id = x.record_id
and (r.record_id > 2202000 or 2202000 is null)
and r.record_id = u.record_id
and (u.date_updated > '1960-10-19 10:18:52.0' or '1960-10-19 10:18:52.0' is null)
and u.date_updated <= '2010-10-07 10:18:52.0'
group by u.record_id
order by u.record_id
limit 1000;
обновление: Я справился со своей проблемой, изменив с
group by u.record_id
order by u.record_id
на
group by r.record_id
order by r.record_id
Итак, сейчас это спорный вопрос, но мне все еще интереснок первоначальному вопросу.