hola a todos
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 originalSELECT
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