Planeraren använder troligen inte limit
tips för att eliminera rader från ordertabellen före sammanfogningen. Så servern måste göra kopplingen för alla rader och sedan returnera bara några.
Prova detta:
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;
EDIT:Detta fungerar bara om det finns en begränsning som garanterar att motsvarande rader finns i produkt- och persontabeller.