Ver Mensaje Individual
  #9 (permalink)  
Antiguo 07/05/2014, 07:14
Avatar de gnzsoloyo
gnzsoloyo
Moderador criollo
 
Fecha de Ingreso: noviembre-2007
Ubicación: Actualmente en Buenos Aires (el enemigo ancestral)
Mensajes: 23.324
Antigüedad: 16 años, 5 meses
Puntos: 2658
Respuesta: Hacer un SELECT con limite 1 para dos códigos

Volvamos al principio:
Cita:
Con estos valores:
1 - 8 - 2014-05-07 10:00:00
2 - 8 - 2014-05-07 10:00:01
3 - 8 - 2014-05-07 10:00:02
4 - 10 - 2014-05-07 10:00:03
5 - 8 - 2014-05-07 10:00:04

Me gustaría obtener 1 registro del código 8 y un registro del código 10 en un mismo SELECT ordenados por fecha DESC

Resultado que necesito:

4 - 10 - 2014-05-07 10:00:03
5 - 8 - 2014-05-07 10:00:04
Por los datos que muestras, y el resultado que buscas, lo que quieres es el último regustro ingresado de cada uno de esos códigos.
Eso hay varias formas de obtenerlo, or ejemplo:
Código MySQL:
Ver original
  1. SELECT codigo, MAX(fecha) fecha
  2. FROM tabla
  3. WHERE codigo IN (8, 10)
  4. GROUP BY codigo

Código MySQL:
Ver original
  1. SELECT codigo, fecha
  2.     (SELECT codigo, fecha
  3.     FROM tabla
  4.     WHERE codigo IN (8, 10)
  5.     ORDER BY codigo, fecha) T1
  6. GROUP BY codigo
Esas serían las más simples.

Ahora bien, esto:
Cita:
en la tabla original que son 86 millones de registros (...)
Es información que deberías habernos dado desde el principio. En ese caso lo primero es asegurarse de los índices, y además no traer datos en el SELECT que no sean estrictamente necesarios.
Es decir, nada de hacer "SELECT * ...". Eso te matará la consulta.

¿QUé índices tienes y sobre qué campos está creado cada uno?

Habría, además, que asegurarse de que la query esté usando realmente el índice. Un EXPLAIN sería una buena idea para tu prueba.
__________________
¿A quién le enseñan sus aciertos?, si yo aprendo de mis errores constantemente...
"El problema es la interfase silla-teclado." (Gillermo Luque)

Última edición por gnzsoloyo; 07/05/2014 a las 07:59