Ver Mensaje Individual
  #2 (permalink)  
Antiguo 26/11/2012, 02:26
Pelirr
 
Fecha de Ingreso: diciembre-2008
Mensajes: 233
Antigüedad: 15 años, 4 meses
Puntos: 1
Respuesta: Lentitud en consulta con select 1

Aquí va la optimización que intenté con subconsulta:

Código MySQL:
Ver original
  1.  
  2.     if (subconsulta.idArrival is null, null, subconsulta.idArrival) as idArrival,
  3.     if (subconsulta.idDeparture is null, null, subconsulta.idDeparture) as idDeparture,
  4.     if (subconsulta.estadoL is null, 'IBK', subconsulta.estadoL) as estadoL,
  5.     if (subconsulta.estadoS is null, 'OBK', subconsulta.estadoL) as estadoS,
  6.     if (subconsulta.aeronave is null, '- -', subconsulta.aeronave) as aeronave,
  7.     if (subconsulta.matricula is null, '- -', subconsulta.matricula) as matricula,
  8.     if (subconsulta.inBlockTime is null, '- -', cast(DATE_FORMAT(subconsulta.inBlockTime, '%d/%m/%Y %H:%i') as char)) as inBlockTime,
  9.     if (subconsulta.aeropuertoL is null, '- -', subconsulta.aeropuertoL) as aeropuertoL,
  10.     if (subconsulta.companiaL is null, '- -', subconsulta.companiaL) as companiaL,
  11.     if (subconsulta.numVueloL is null, '- -', subconsulta.numVueloL) as numVueloL,
  12.     if (subconsulta.paxL is null, '- -', cast(subconsulta.paxL as char)) as paxL,
  13.     if (subconsulta.offBlockTime is null, '- -', cast(DATE_FORMAT(subconsulta.offBlockTime, '%d/%m/%Y %H:%i') as char)) as offBlockTime,
  14.     if (subconsulta.aeropuertoS is null, '- -', subconsulta.aeropuertoS) as aeropuertoS,
  15.     if (subconsulta.companiaS is null, '- -', subconsulta.companiaS) as companiaS,
  16.     if (subconsulta.numVueloS is null, '- -', subconsulta.numVueloS) as numVueloS,
  17.     if (subconsulta.paxS is null, '- -', cast(subconsulta.paxS as char)) as paxS,
  18.     if (subconsulta.airbridgeUse is null, 'NO', if (subconsulta.airbridgeUse='- -', '- -', 'SI')) as subconsulta.airbridgeUse
  19.     a.idArrivalFlight as idArrival,
  20.     a.idDepartureFlight as idDeparture,
  21.     a.statusCode as estadoL,
  22.     (select d.statusCode from `departureflight` d where d.idDepartureFlight = a.idDepartureFlight) as estadoS,
  23.     (select c.iataAircraft from `subtypeiataaircraft` c, `aircraft` b where b.subtypeIataCode = c.idSubtypeIata and a.tailNumber = b.tailNumber) as aeronave,
  24.     a.tailNumber as matricula,
  25.     a.estimatedTime as inBlockTime,
  26.     a.originAirport as aeropuertoL,
  27.     a.iataCompanyCode as companiaL,
  28.     a.flightNumber as numVueloL,
  29.     (select c.pax from `paxmerchandisepost` c where c.idArrivalFlight = a.idArrivalFlight) as paxL,
  30.     (select d.estimatedTime from `departureflight` d where d.idDepartureFlight = a.idDepartureFlight) as offBlockTime,
  31.     (select d.iataAirportCode from `departureflight` d where d.idDepartureFlight = a.idDepartureFlight) as aeropuertoS,
  32.     (select d.iataCompanyCode from `departureflight` d where d.idDepartureFlight = a.idDepartureFlight) as companiaS,
  33.     (select d.flightNumber from `departureflight` d where d.idDepartureFlight = a.idDepartureFlight) as numVueloS,
  34.     (select d.idDepartureFlight from `departureflight` d where a.idDepartureFlight = d.idDepartureFlight) as paxS,
  35.     (select e.idFingerService from `fingerservice` e where e.idArrivalFlight = a.idArrivalFlight group by e.idArrivalFlight) as airbridgeUse
  36.    
  37.     from `arrivalflight` a where a.estimatedTime >= '2012-10-16 00:00:00' and a.estimatedTime < '2012-10-17 00:00:00' and a.idSituation = '2'
  38.  
  39.     union
  40.     (select
  41.         (select a.idArrivalFlight from `arrivalflight` a where a.idDepartureFlight = e.idDepartureFlight) as idArrival,
  42.         e.idDepartureFlight as idDeparture,
  43.         (select a.statusCode from `arrivalflight` a where a.idDepartureFlight = e.idDepartureFlight) as estadoL,
  44.         e.statusCode as estadoS,
  45.         (select c.iataAircraft from `aircraft` b, `subtypeiataaircraft` c where b.tailNumber = e.tailNumber and b.subtypeIataCode = c.idSubtypeIata) as aeronave,
  46.         e.tailNumber as matricula,
  47.     (select a.estimatedTime from `arrivalflight` a where a.idDepartureFlight = e.idDepartureFlight) as inBlockTime,
  48.     (select a.originAirport from `arrivalflight` a where a.idDepartureFlight = e.idDepartureFlight) as aeropuertoL,
  49.     (select a.iataCompanyCode from `arrivalflight` a where a.idDepartureFlight = e.idDepartureFlight) as companiaL,
  50.     (select a.flightNumber from `arrivalflight` a where a.idDepartureFlight = e.idDepartureFlight) as numVueloL,
  51.     (select c.pax from `paxmerchandisepost` c where c.idArrivalFlight in (select a.idArrivalFlight from `arrivalflight` a where a.idDepartureFlight = e.idDepartureFlight)) as paxL,
  52.         e.estimatedTime as offBlockTime,
  53.         e.iataAirportCode as aeropuertoS,
  54.         e.iataCompanyCode as companiaS,
  55.         e.flightNumber as numVueloS,
  56.         (select c.pax from `paxmerchandisepost` c where c.idDepartureFlight = e.idDepartureFlight) as paxS,
  57.         '- -' as airbridgeUse
  58.             from `departureflight` e where
  59.                 e.idDepartureFlight not in (select a.idDepartureFlight from `arrivalflight` a where a.idDepartureFlight is not null and a.estimatedTime >= '2012-10-16 00:00:00' and a.estimatedTime < '2012-10-17 00:00:00')
  60.                 and e.estimatedTime >= '2012-10-16 00:00:00' and e.estimatedTime < '2012-10-17 00:00:00' and e.idSituation = '2')
  61.  
  62.     order by inBlockTime desc, offBlockTime desc) as subconsulta;
Un saludo

Última edición por gnzsoloyo; 26/11/2012 a las 07:23 Razón: Mal etiquetado