sql >> Databasteknik >  >> RDS >> Mysql

Hur kan jag optimera den här frågan, tar mer än en minut att köra

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.



  1. Hur jämför man ett datum från mySQL från det aktuella datumet i java?

  2. Hur kan man få unika värden från datatabellen med hjälp av dql?

  3. SQL Server Management Studio (SSMS)

  4. Indexstorlekar i MySQL