sql >> Database teknologi >  >> RDS >> Mysql

Hvordan kan jeg optimere denne forespørgsel, tager mere end et minut at udføre

Planlæggeren bruger sandsynligvis ikke limit tip til at fjerne rækker fra ordretabellen før sammenføjningen. Så serveren skal lave joinforbindelsen for alle rækker og derefter returnere nogle få.

Prøv dette:

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:Dette vil kun fungere, hvis der er en begrænsning, der garanterer, at tilsvarende rækker er til stede i produkt- og persontabeller.



  1. PERIOD_DIFF() Eksempler – MySQL

  2. MySQL en-til-mange joinforbindelse med Group By returnerer kun én observation

  3. Hvordan åbner man en SDF-fil (SQL Server Compact Edition)?

  4. Beregning af tidsforskel før kl. 06.00 og efter kl. 22.00 i MySQL