Ver Mensaje Individual
  #1 (permalink)  
Antiguo 14/07/2016, 14:53
Avatar de shake2427
shake2427
 
Fecha de Ingreso: julio-2011
Mensajes: 116
Antigüedad: 12 años, 9 meses
Puntos: 3
Pregunta optimizar consulta mysql

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 original
  1. SELECT
  2.     YEAR(a.fecha_creacion) AS years,
  3.     MONTH(a.fecha_creacion) AS mes,
  4.     b.num_semana AS semana,
  5.     c.tipo_liquidacion,
  6.     e.zona AS zona,
  7.     d.nombre AS tecnico,
  8.     f.suerte AS sectorsuerte,
  9.     f.sector,
  10.     h.codigo AS codigolabor,
  11.     h.labor AS labor,
  12.     g.codigo AS codigoservicio,
  13.     g.servicio AS servicio,
  14.     l.nombre AS proveedor,
  15.     l.nit AS nitproveedor,
  16.     i.unidad_medida AS unidad_medida,
  17.     c.cantidad_solicitada,
  18.     c.valor_programa,
  19.     c.cantidad_recibida,
  20.     c.valorprograma_liquidacion,
  21.     (SELECT
  22.             solicitud_pedido
  23.         FROM
  24.             ok_reportesap_det
  25.         WHERE
  26.             fk_detalle = c.id
  27.         ORDER BY id DESC
  28.         LIMIT 0 , 1) AS solicitud_pedido,
  29.     a.id,
  30.     a.tipo,
  31.     c.num_centrodecosto,
  32.     c.num_cuenta,
  33.     c.num_orden,
  34.     c.id,
  35.     c.id AS iddetallapro
  36. FROM
  37.     ok_programacion AS a
  38.         INNER JOIN
  39.     ok_semana_det AS b ON b.id = a.fk_semana
  40.         INNER JOIN
  41.     ok_programacion_det AS c ON c.fk_programacion = a.id
  42.         INNER JOIN
  43.     ok_usuarios AS d ON d.id = c.autor
  44.         LEFT JOIN
  45.     ok_zonas AS e ON e.id = d.fk_zona
  46.         LEFT JOIN
  47.     ok_maestrosuertes AS f ON f.id = c.fk_maestrosuertes
  48.         INNER JOIN
  49.     ok_servicios AS g ON g.id = c.fk_servicio
  50.         INNER JOIN
  51.     ok_labores AS h ON h.id = g.fk_labor
  52.         INNER JOIN
  53.     ok_proveedores AS l ON l.id = c.fk_proveedor
  54.         INNER JOIN
  55.     ok_unidadmedida AS i ON i.id = g.fk_unidad
  56. WHERE
  57.     a.fk_empresa = 2
  58.         AND ((a.tipo = 1 AND a.estado = 7)
  59.         OR (a.tipo = 2 AND a.estado = 4))
  60.         AND c.estado = 1
  61.         AND YEAR(a.fecha_creacion) IN (2014 , 2015, 2016)
  62.         AND MONTH(a.fecha_creacion) IN (1 , 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12)
  63. ORDER BY b.num_semana DESC , a.tipo ASC


gracias