Buenas a todo el mundo, tengo una consulta que me está matando el servidor, me tarda 11 segundos en escupir resultados y me gustaría ver si alguien puede mejorarla:
Cita: Select a.idarticulo,p.idpedido,d.titulo, d.adicional, d.url, a.precioa, a.preciob, a.precioc ,a.idstock,a.imagen1, a.url As ul, f.url_l, Count(p.idarticulo) As ContArt, a.idstock, a.comprable, a.idarticulo, a.precioanterior From (((art a Inner Join art_desc d ON a.idarticulo=d.idarticulo And d.ididioma=0) Inner Join fam_desc f ON a.idfamilia=f.idfamilia And f.ididioma=0) Inner Join ped_det p ON a.idarticulo=p.idarticulo And p.idpedido IN (Select idpedido From ped_det where idarticulo=1860) And a.idarticulo<>1860)) Where a.publicar='True' And a.idstock<>3 And a.comprable='True' Group By a.idarticulo Order By ContArt DESC Limit 6;
La parte que más consume (el 80%) es de lo que está en negrita, ¿alguien me puede echar una mano?
Tengo índices en los campos a.idarticulo, d.idarticulo, d.idioma, f.ididioma, p.idarticulo, a.publicar, a.idstock, a.comprable
Vamos, en todos los campos que están incluidos en la consulta, he probado a hacer indices combinados pero tampoco mejora.
La instrucción "explain" de mysql me da como resultado lo que adjunto en la imagen.
Muchas gracias.