Le planificateur, très probablement, n'utilise pas la limit
indice pour éliminer les lignes de la table de commande avant la jointure. Le serveur doit donc effectuer la jointure pour toutes les lignes, puis n'en renvoyer que quelques-unes.
Essayez ceci :
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 :Cela ne fonctionnera que s'il existe une contrainte garantissant que les lignes correspondantes sont présentes dans les tables Product et Person.