sql >> Base de Datos >  >> RDS >> Mysql

¿Cómo puedo optimizar esta consulta? Tarda más de un minuto en ejecutarse.

Lo más probable es que el planificador no esté usando el limit Sugerencia para eliminar filas de la tabla de pedidos antes de la combinación. Entonces, el servidor tiene que unir todas las filas y luego devolver solo algunas.

Prueba esto:

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;

EDITAR:Esto funcionará solo si existe una restricción que garantice que las filas correspondientes estén presentes en las tablas de Producto y Persona.