tengo un problema en una consulta sql la cual se esta demorando mas de un minuto, quisiera saber si pueden ayudar a optimizarla lo mas posible, yo he realizado lo mas posible, todos los campos que se usan de busquedad ya estan indexados y no se que mas hacerle.
Código SQL:
Ver original
SELECT YEAR(a.fecha_creacion) AS years, MONTH(a.fecha_creacion) AS mes, b.num_semana AS semana, c.tipo_liquidacion, e.zona AS zona, d.nombre AS tecnico, f.suerte AS sectorsuerte, f.sector, h.codigo AS codigolabor, h.labor AS labor, g.codigo AS codigoservicio, g.servicio AS servicio, l.nombre AS proveedor, l.nit AS nitproveedor, i.unidad_medida AS unidad_medida, c.cantidad_solicitada, c.valor_programa, c.cantidad_recibida, c.valorprograma_liquidacion, (SELECT solicitud_pedido FROM ok_reportesap_det WHERE fk_detalle = c.id ORDER BY id DESC LIMIT 0 , 1) AS solicitud_pedido, a.id, a.tipo, c.num_centrodecosto, c.num_cuenta, c.num_orden, c.id, c.id AS iddetallapro FROM ok_programacion AS a INNER JOIN ok_semana_det AS b ON b.id = a.fk_semana INNER JOIN ok_programacion_det AS c ON c.fk_programacion = a.id INNER JOIN ok_usuarios AS d ON d.id = c.autor LEFT JOIN ok_zonas AS e ON e.id = d.fk_zona LEFT JOIN ok_maestrosuertes AS f ON f.id = c.fk_maestrosuertes INNER JOIN ok_servicios AS g ON g.id = c.fk_servicio INNER JOIN ok_labores AS h ON h.id = g.fk_labor INNER JOIN ok_proveedores AS l ON l.id = c.fk_proveedor INNER JOIN ok_unidadmedida AS i ON i.id = g.fk_unidad WHERE a.fk_empresa = 2 AND ((a.tipo = 1 AND a.estado = 7) OR (a.tipo = 2 AND a.estado = 4)) AND c.estado = 1 AND YEAR(a.fecha_creacion) IN (2014 , 2015, 2016) AND MONTH(a.fecha_creacion) IN (1 , 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12) ORDER BY b.num_semana DESC , a.tipo ASC
gracias