計画担当者は、おそらく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;
編集:これは、対応する行がProductテーブルとPersonテーブルに存在することを保証する制約がある場合にのみ機能します。