Proyecto

General

Perfil

Correccion - Mejora #2837

Optimización de consultas

Añadido por Santiago Ramos hace alrededor de 7 años. Actualizado hace alrededor de 7 años.

Estado:
Resuelta
Prioridad:
Normal
Asignado a:
Categoría:
Desarrollo
Versión prevista:
Fecha de inicio:
2017-02-28
Fecha fin:
% Realizado:

100%

Tiempo estimado:
3.00 h

Descripción

Al hacer una inserción de nuevo gasto de proyecto los logs indican lo siguiente:

  SQL (1.6ms)  INSERT INTO `gasto` (`agente_id`, `agente_tasa_cambio_id`, `concepto`, `created_at`, `es_valorizado`, `fecha`, `fecha_informe`, `importe`, `impuestos`, `marcado_agente_id`, `marcado_id`, `moneda_id`, `numero_factura`, `observaciones`, `oei_erp_centro_coste`, `oei_erp_cuenta`, `oei_erp_documento`, `oei_erp_importe_divisa`, `oei_erp_importe_moneda`, `oei_erp_seccion`, `orden_factura_agente`, `orden_factura_proyecto`, `pais_id`, `partida_id`, `proveedor_id`, `proyecto_origen_id`, `ref_contable`, `subpartida_agente_id`, `updated_at`) VALUES (8, 1692, 'xxx', '2017-02-28 13:00:17', 0, '2013-04-22 00:00:00', '2013-04-22 00:00:00', 76.0, 0.0, NULL, NULL, 14, 'FAC02_00000142', '(02_00000142) Aprobado con fecha 02/07/2013', '147-1101-001', '2-3-75-10-60-04', '02_00000142', 14.25, 76.0, '', NULL, NULL, 3, 52, 16737, 1760, 'CP011154/2', NULL, '2017-02-28 13:00:17')
  Marcado Load (0.9ms)  SELECT `marcado`.* FROM `marcado` WHERE `marcado`.`automatico` = 1 LIMIT 1
  SQL (0.9ms)  UPDATE `gasto` SET `marcado_id` = 1 WHERE `gasto`.`id` = 2256545
  Etapa Load (0.8ms)  SELECT `etapa`.* FROM `etapa` WHERE `etapa`.`agente_id` = 8 AND (fecha_inicio <= '2013-04-22 00:00:00' AND fecha_fin >= '2013-04-22 00:00:00') ORDER BY fecha_inicio LIMIT 1
  Gasto Load (1.5ms)  SELECT `gasto`.* FROM `gasto` WHERE (agente_id = 8 AND orden_factura_agente > 0 AND fecha >= '2013-01-01' AND fecha <= '2013-12-31') ORDER BY `gasto`.`id` DESC LIMIT 1
  SQL (0.8ms)  UPDATE `gasto` SET `orden_factura_agente` = 55264 WHERE `gasto`.`id` = 2256545
  Proyecto Load (1.2ms)  SELECT `proyecto`.* FROM `proyecto` WHERE `proyecto`.`id` = 1760 LIMIT 1
   (1702.6ms)  SELECT MAX(`gasto`.`orden_factura_proyecto`) AS max_id FROM `gasto` WHERE (proyecto_origen_id = 1760 AND agente_id = 8 )
  SQL (1.7ms)  UPDATE `gasto` SET `orden_factura_proyecto` = 66 WHERE `gasto`.`id` = 2256545

Es absurdo el tiempo que se tarda en resolver la consulta para determinar "orden_factura_proyecto" y habría que optimizarla.

Histórico

#1 Actualizado por Santiago Ramos hace alrededor de 7 años

Revisar también los tiempos de búsqueda de una TC y porqué hace búsquedas dobles según la fecha:

SELECT `tasa_cambio`.* FROM `tasa_cambio` WHERE `tasa_cambio`.`etapa_id` = 835 AND `tasa_cambio`.`moneda_id` = 14 AND `tasa_cambio`.`objeto` = 'gasto' AND `tasa_cambio`.`agente_id` IS NULL AND `tasa_cambio`.`pais_id` = 3 AND (fecha_inicio <= '2014-02-28 00:00:00') ORDER BY fecha_inicio DESC LIMIT 1

Esto último no tiene sentido puesto que ya está filtrando por una etapa concreta y no necesita fecha de inicio o de fin.

#2 Actualizado por Santiago Ramos hace alrededor de 7 años

  • Categoría establecido a Desarrollo
  • Estado cambiado Nueva por Asignada
  • Asignado a establecido a Santiago Ramos
  • Versión prevista establecido a 2.54
  • Tiempo estimado establecido a 3.00

Exportar a: Atom PDF

Financiado por:

Desarrollado por:
Software libre forjado en: