sql >> Database >  >> RDS >> Mysql

Hoe kan ik deze query optimaliseren, duurt meer dan een minuut om uit te voeren?

De planner gebruikt hoogstwaarschijnlijk niet de limit hint om rijen uit de besteltabel te verwijderen vóór de samenvoeging. Dus de server moet de join voor alle rijen doen en er dan maar een paar teruggeven.

Probeer dit:

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;

BEWERKEN:Dit werkt alleen als er een beperking is die garandeert dat overeenkomstige rijen aanwezig zijn in de tabellen Product en Persoon.



  1. Mysql_real_escape_string() Er kon geen link naar de server tot stand worden gebracht

  2. Hoe de juiste opvulling op de dagnaam in Oracle te verwijderen

  3. MySQL DATETIME - Wijzig alleen de datum

  4. Laatste invoeg-ID voor mysql krijgen na invoegen