Планировщикът най-вероятно не използва limit
намек за премахване на редове от таблицата с поръчки преди присъединяването. Така сървърът трябва да извърши обединяването за всички редове и след това да върне само няколко.
Опитайте това:
select o.* from
(select * order order by id desc limit 100) o
inner join product p
on o.product_id=p.id
inner join person per
on o.person_id=per.id
order by o.id desc limit 100;
РЕДАКТИРАНЕ:Това ще работи само ако има ограничение, гарантиращо наличието на съответните редове в таблиците с продукти и лица.