Foros del Web » Programación para mayores de 30 ;) » Bases de Datos General » Mysql »

Lentitud en consulta con select 1

Estas en el tema de Lentitud en consulta con select 1 en el foro de Mysql en Foros del Web. Buenos días, necesito ayuda con una consulta que estoy realizando sobre unas cuantas tablas. El problema es que cuando hay muchos registros, la consulta puede ...
  #1 (permalink)  
Antiguo 26/11/2012, 02:22
 
Fecha de Ingreso: diciembre-2008
Mensajes: 233
Antigüedad: 12 años, 2 meses
Puntos: 1
Lentitud en consulta con select 1

Buenos días, necesito ayuda con una consulta que estoy realizando sobre unas cuantas tablas. El problema es que cuando hay muchos registros, la consulta puede durar hasta 5 minutos, y eso es demasiado, me gustaría optimizar la consulta, pero no sé como hacerlo. He estado mirando por internet, pero igual dicen que hay que utilizar 'inner join' que dicen que es lo mismo utilizar la cláusula 'where', así que estoy hecha un lío. Mi consulta es la siguiente:
Código MySQL:
Ver original
  1.     a.idArrivalFlight as idArrival,
  2.     a.idDepartureFlight as idDeparture,
  3.     a.statusCode as estadoL,
  4.     if ((select d.statusCode from `departureflight` d where d.idDepartureFlight = a.idDepartureFlight) is null, 'OBK', (select d.statusCode from departureflight` d where d.idDepartureFlight = a.idDepartureFlight)) as estadoS,
  5.    if ((select c.iataAircraft from `subtypeiataaircraft` c,`aircraft` b where b.subtypeIataCode = c.idSubtypeIata and a.tailNumber = b.tailNumber) is null, '- -', (select c.iataAircraft from `subtypeiataaircraft` c,`aircraft` b where b.subtypeIataCode = c.idSubtypeIata and a.tailNumber = b.tailNumber)) as aeronave,
  6.    if (a.tailNumber is null, '- -', a.tailNumber) as matricula,
  7.    cast(DATE_FORMAT(a.estimatedTime, '%d/%m/%Y %H:%i') as char) as inBlockTime,
  8.    a.originAirport as aeropuertoL,
  9.    a.iataCompanyCode as companiaL,
  10.    a.flightNumber as numVueloL,
  11.    if ((select c.pax from `paxmerchandisepost` c where c.idArrivalFlight = a.idArrivalFlight) is null, '- -', cast((select c.pax from `paxmerchandisepost` c where c.idArrivalFlight = a.idArrivalFlight) as char)) as paxL,
  12.    if ((select d.estimatedTime from `departureflight` d where d.idDepartureFlight = a.idDepartureFlight) is null, '- -', cast(DATE_FORMAT((select d.estimatedTime from `departureflight` d where d.idDepartureFlight = a.idDepartureFlight),'%d/%m/%Y %H:%i') as char)) as offBlockTime,
  13.    if ((select d.iataAirportCode from `departureflight` d where d.idDepartureFlight = a.idDepartureFlight) is null, '- -', (select d.iataAirportCode from `departureflight` d where d.idDepartureFlight = a.idDepartureFlight)) as aeropuertoS,
  14.    if ((select d.iataCompanyCode from `departureflight` d where d.idDepartureFlight = a.idDepartureFlight) is null, '- -', (select d.iataCompanyCode from `departureflight` d where d.idDepartureFlight = a.idDepartureFlight)) as companiaS,
  15.    if ((select d.flightNumber from `departureflight` d where d.idDepartureFlight = a.idDepartureFlight) is null, '- -', (select d.flightNumber from `departureflight` d where d.idDepartureFlight = a.idDepartureFlight)) as numVueloS,
  16.    if( (select d.idDepartureFlight from `departureflight` d where a.idDepartureFlight = d.idDepartureFlight) is null,  '- -',
  17.        if ((select c.pax from `paxmerchandisepost` c where c.idDepartureFlight = a.idDepartureFlight) is null, '- -',cast((select c.pax from `paxmerchandisepost` c where c.idDepartureFlight = a.idDepartureFlight) as char)))  as paxS,
  18.    if ((select e.idFingerService from `fingerservice` e where e.idArrivalFlight = a.idArrivalFlight group by e.idArrivalFlight) is null, 'NO', 'YES') as airbridgeUse
  19.    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'
  20.  
  21.    union
  22.    (select
  23.        if ((select a.idArrivalFlight from `arrivalflight` a where a.idDepartureFlight = e.idDepartureFlight) is null, null, (select a.idArrivalFlight from `arrivalflight` a where a.idDepartureFlight = e.idDepartureFlight)) as idArrival,
  24.        e.idDepartureFlight as idDeparture,
  25.        if ((select a.statusCode from `arrivalflight` a where a.idDepartureFlight = e.idDepartureFlight) is null, 'IBK', (select a.statusCode from `arrivalflight` a where a.idDepartureFlight = e.idDepartureFlight)) as estadoL,
  26.        e.statusCode as estadoS,
  27.        if ((select c.iataAircraft from `aircraft` b, `subtypeiataaircraft` c where b.tailNumber = e.tailNumber and b.subtypeIataCode = c.idSubtypeIata) is null, '- -', (select c.iataAircraft from `aircraft` b, `subtypeiataaircraft` c where b.tailNumber = e.tailNumber and b.subtypeIataCode = c.idSubtypeIata)) as aeronave,
  28. if (e.tailNumber is null, '- -', e.tailNumber) as matricula,
  29. if ((select a.estimatedTime from `arrivalflight` a where a.idDepartureFlight = e.idDepartureFlight) is null, '- -',
  30.    cast(DATE_FORMAT((select a.estimatedTime from `arrivalflight` a where  a.idDepartureFlight = e.idDepartureFlight), '%d/%m/%Y %H:%i') as char) ) as inBlockTime,
  31. if ((select a.originAirport from `arrivalflight` a where a.idDepartureFlight = e.idDepartureFlight) is null, '- -',
  32.    (select a.originAirport from `arrivalflight` a where a.idDepartureFlight = e.idDepartureFlight)) as aeropuertoL,
  33. if ((select a.iataCompanyCode from `arrivalflight` a where a.idDepartureFlight = e.idDepartureFlight) is null, '- -',
  34.    (select a.iataCompanyCode from `arrivalflight` a where a.idDepartureFlight = e.idDepartureFlight)) as companiaL,
  35. if ((select a.flightNumber from `arrivalflight` a where a.idDepartureFlight = e.idDepartureFlight) is null, '- -',
  36.    (select a.flightNumber from `arrivalflight` a where a.idDepartureFlight = e.idDepartureFlight)) as numVueloL,
  37. if ((select c.pax from `paxmerchandisepost` c where c.idArrivalFlight in (select a.idArrivalFlight from `arrivalflight` a where a.idDepartureFlight = e.idDepartureFlight)) is null, '- -', cast((select c.pax from `paxmerchandisepost` c where c.idArrivalFlight in (select a.idArrivalFlight from `arrivalflight` a where a.idDepartureFlight = e.idDepartureFlight)) as char)) as paxL,
  38.        cast(DATE_FORMAT(e.estimatedTime,'%d/%m/%Y %H:%i') as char) as offBlockTime,
  39.        e.iataAirportCode as aeropuertoS,
  40.        e.iataCompanyCode as companiaS,
  41.        e.flightNumber as numVueloS,
  42.        if ((select c.pax from `paxmerchandisepost` c where c.idDepartureFlight = e.idDepartureFlight) is null, '- -',cast((select c.pax from `paxmerchandisepost` c where c.idDepartureFlight = e.idDepartureFlight) as char)) as paxS,
  43.        '- -' as airbridgeUse
  44.            from `departureflight` e where
  45.                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')
  46.                and e.estimatedTime >= '2012-10-16 00:00:00' and e.estimatedTime < '2012-10-17 00:00:00' and e.idSituation = '2')
  47.  
  48.    order by inBlockTime desc, offBlockTime desc;
he intentado optimizarla haciendo una subconsulta, porque me parece que elimino algunos select, pero parece que sólo quito unos pocos segundos de consulta, necesito reducir mucho más el tiempo. Os pongo lo que hice en el siguiente mensaje porque no me cabe todo en éste.

No os fijéis en las fechas, son sólo para probar.

Me gustaría saber qué puedo hacer para que vaya más rápido.

Muchas gracias de antemano, un saludo

Última edición por gnzsoloyo; 26/11/2012 a las 07:24 Razón: Mal etiquetado
  #2 (permalink)  
Antiguo 26/11/2012, 02:26
 
Fecha de Ingreso: diciembre-2008
Mensajes: 233
Antigüedad: 12 años, 2 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
  #3 (permalink)  
Antiguo 26/11/2012, 03:24
Avatar de Heimish2000  
Fecha de Ingreso: enero-2011
Ubicación: Madrid
Mensajes: 844
Antigüedad: 10 años, 1 mes
Puntos: 89
Respuesta: Lentitud en consulta con select 1

Para empezar, debes usar JOINs, también poner las condiciones en los where de más restrictiva a más general y luego puedes intentar evitar las subconsultas y también crear índices en las tambas
  #4 (permalink)  
Antiguo 26/11/2012, 04:06
 
Fecha de Ingreso: diciembre-2008
Mensajes: 233
Antigüedad: 12 años, 2 meses
Puntos: 1
Respuesta: Lentitud en consulta con select 1

Muchas gracias Heimish2000, lo intentaré. Pero en cuanto a lo de los joins, ¿son más eficientes que la cláusula where? Por lo que he visto por internet, en muchos sitios dice que son por el estilo e incluso mejor utilizar el where que el join. ¿Realmente me aconsejas utilizar el join en lugar del where?

También estoy utilizando 'explain' para ver como ir optimizando.

Muchas gracias, un saludo
  #5 (permalink)  
Antiguo 26/11/2012, 04:47
 
Fecha de Ingreso: diciembre-2008
Mensajes: 233
Antigüedad: 12 años, 2 meses
Puntos: 1
Respuesta: Lentitud en consulta con select 1

Hola, he probado a indexar los campos por los que hacía la búsqueda (estimatedTime) en ambas tablas, y ahora la consulta es un 96% más rápida.
Te agradezco mucho Heimish2000 que me respondieras, entre tu respuesta y consultando por internet, utilizando por ejemplo la partícula 'explain' antes de la consulta para ver tb como cambiaba la cosa, me ha ido muy bien.

Muchas gracias, un saludo
  #6 (permalink)  
Antiguo 26/11/2012, 08:35
Avatar de Heimish2000  
Fecha de Ingreso: enero-2011
Ubicación: Madrid
Mensajes: 844
Antigüedad: 10 años, 1 mes
Puntos: 89
Respuesta: Lentitud en consulta con select 1

Cita:
Iniciado por Pelirr Ver Mensaje
Muchas gracias Heimish2000, lo intentaré. Pero en cuanto a lo de los joins, ¿son más eficientes que la cláusula where? Por lo que he visto por internet, en muchos sitios dice que son por el estilo e incluso mejor utilizar el where que el join. ¿Realmente me aconsejas utilizar el join en lugar del where?

También estoy utilizando 'explain' para ver como ir optimizando.

Muchas gracias, un saludo
Ya me dirás dónde pone que son parecidos, porque no es verdad. Si buscas un poco en internet verás que los JOINs son muchísimo más eficientes.
  #7 (permalink)  
Antiguo 26/11/2012, 15:05
Avatar de gnzsoloyo
Moderador criollo
 
Fecha de Ingreso: noviembre-2007
Ubicación: Actualmente en Buenos Aires (el enemigo ancestral)
Mensajes: 23.324
Antigüedad: 13 años, 3 meses
Puntos: 2656
Respuesta: Lentitud en consulta con select 1

Francamente, Pelirr, pocas veces he visto una consulta escrita de una forma más ineficiente, enredada, y con tanto desperdicio de recursos.
Me llevó casi media hora limpiarle todo lo que tiene de más, y no me puse a analizar completamente la lógica de algunas partes, que estimo son completamente inútiles, pero luego de simplificarla quedó así:
Código MySQL:
Ver original
  1.     IFNULL(SC.idArrival, NULL, SC.idArrival) idArrival,
  2.     IFNULL(SC.idDeparture, NULL, SC.idDeparture) idDeparture,
  3.     IFNULL(SC.estadoL, 'IBK', SC.estadoL) estadoL,
  4.     IFNULL(SC.estadoS, 'OBK', SC.estadoL) estadoS,
  5.     IFNULL(SC.aeronave, '- -', SC.aeronave) aeronave,
  6.     IFNULL(SC.matricula, '- -', SC.matricula) matricula,
  7.     IFNULL(SC.inBlockTime, '- -', cast(DATE_FORMAT(SC.inBlockTime, '%d/%m/%Y %H:%i') as CHAR)) inBlockTime,
  8.     IFNULL(SC.aeropuertoL, '- -', SC.aeropuertoL) aeropuertoL,
  9.     IFNULL(SC.companiaL, '- -', SC.companiaL) companiaL,
  10.     IFNULL(SC.numVueloL, '- -', SC.numVueloL) numVueloL,
  11.     IFNULL(SC.paxL, '- -', cast(SC.paxL as CHAR)) paxL,
  12.     IFNULL(SC.offBlockTime, '- -', cast(DATE_FORMAT(SC.offBlockTime, '%d/%m/%Y %H:%i') as CHAR)) offBlockTime,
  13.     IFNULL(SC.aeropuertoS, '- -', SC.aeropuertoS) aeropuertoS,
  14.     IFNULL(SC.companiaS, '- -', SC.companiaS) companiaS,
  15.     IFNULL(SC.numVueloS, '- -', SC.numVueloS) numVueloS,
  16.     IFNULL(SC.paxS, '- -', cast(SC.paxS as CHAR)) paxS,
  17.     IFNULL(SC.airbridgeUse, 'NO', if (SC.airbridgeUse='- -', '- -', 'SI')) airbridgeUse
  18.     (SELECT
  19.         a.idArrivalFlight idArrival,
  20.         a.idDepartureFlight idDeparture,
  21.         a.statusCode estadoL,
  22.         d.statusCode estadoS,
  23.         ac.iataAircraft aeronave,
  24.         a.tailNumber matricula,
  25.         a.estimatedTime inBlockTime,
  26.         a.originAirport aeropuertoL,
  27.         a.iataCompanyCode companiaL,
  28.         a.flightNumber numVueloL,
  29.         pm.pax paxL,
  30.         d.estimatedTime offBlockTime,
  31.         d.iataAirportCode aeropuertoS,
  32.         d.iataCompanyCode companiaS,
  33.         d.flightNumber numVueloS,
  34.         d.idDepartureFlight paxS,
  35.         fs.idFingerService airbridgeUse
  36.     FROM `arrivalflight` a
  37.         INNER JOIN `departureflight` d ON a.idDepartureFlight = d.idDepartureFlight
  38.         INNER JOIN `aircraft` ac ON a.tailNumber = ac.tailNumber
  39.         INNER JOIN `subtypeiataaircraft` stc ON ac.subtypeIataCode = ac.idSubtypeIata
  40.         INNER JOIN `paxmerchandisepost` pm INNER JOIN pm.idArrivalFlight = a.idArrivalFlight
  41.         INNER JOIN (SELECT * FROM `fingerservice` GROUP BY e.idArrivalFlight) fs ON e.idArrivalFlight = a.idArrivalFlight
  42.     WHERE
  43.         a.estimatedTime BETWEEN '2012-10-16 00:00:00' AND '2012-10-16 23:59:59'
  44.         AND a.idSituation = '2'
  45.      UNION
  46.     (SELECT
  47.         a.idArrivalFlight idArrival,
  48.         e.idDepartureFlight idDeparture,
  49.         a.statusCode estadoL,
  50.         e.statusCode estadoS,
  51.         c.iataAircraft aeronave,
  52.         e.tailNumber matricula,
  53.         a.estimatedTime inBlockTime,
  54.         a.originAirport aeropuertoL,
  55.         a.iataCompanyCode companiaL,
  56.         a.flightNumber numVueloL,
  57.         c.pax paxL,
  58.         e.estimatedTime offBlockTime,
  59.         e.iataAirportCode aeropuertoS,
  60.         e.iataCompanyCode companiaS,
  61.         e.flightNumber numVueloS,
  62.         d.pax paxS,
  63.         '- -' airbridgeUse
  64.     FROM `departureflight` e
  65.         INNER JOIN `arrivalflight` a ON e.idDepartureFlight = a.idDepartureFlight
  66.         INNER JOIN `aircraft` b ON e.tailNumber = b.tailNumber
  67.         INNER JOIN `subtypeiataaircraft` c ON b.subtypeIataCode = c.idSubtypeIata
  68.         INNER JOIN `paxmerchandisepost` d ON a.idArrivalFlight = d.idArrivalFlight
  69.     WHERE
  70.             (a.estimatedTime BETWEEN '2012-10-16 00:00:00' AND '2012-10-16 23:59:59')
  71.         AND (e.estimatedTime BETWEEN '2012-10-16 00:00:00' AND '2012-10-16 23:59:59')
  72.         AND e.idSituation = '2'
  73.      ORDER BY inBlockTime desc, offBlockTime desc
  74.      ) SC2;
- Eliminé todos los AS, que son completamente innecesarios.
- Cambié el enorme IF de los campos por el más eficiente ISNULL(), que cubre casi toda la necesidad.
- Eliminé esas subconsultas sobre el SELECT, que generan un enorme despedicio de recursos (un subselect de ese tipo se ejecuta una vez por cada registro devuelto, y tu los estás poniendo en la mayoría de los campos... haz la cuenta del costo).
- Simplifiqué las subconsultas en los INNER JOIN que de todos modos son lo que en realida estarías haciendo, pero más eficiente.

No puedo probarlo, porque no tengo los datos para hacerlo, pero en esencia ese sería el modo de hacerlo.
El refinamiento de la consulta te lo dejo a ti.
__________________
¿A quién le enseñan sus aciertos?, si yo aprendo de mis errores constantemente...
"El problema es la interfase silla-teclado." (Gillermo Luque)

Etiquetas: join, lentitud, registros, select, tabla
Atención: Estás leyendo un tema que no tiene actividad desde hace más de 6 MESES, te recomendamos abrir un Nuevo tema en lugar de responder al actual.
Respuesta




La zona horaria es GMT -6. Ahora son las 21:50.