Ver Mensaje Individual
  #1 (permalink)  
Antiguo 17/10/2012, 10:03
enero7
 
Fecha de Ingreso: octubre-2012
Mensajes: 1
Antigüedad: 11 años, 7 meses
Puntos: 0
Optimizar query

Hola a todos.

Llevo poco trabajando con oracle y no tengo mucha idea. Estoy tratando de optimizar una consulta. Espero que me podáis ayudar. La idea es la siguiente: en la tabla campaigns tengo los campos id_c, id_user, anio, mes, altas.
Tengo que sumar las altas de un determinado mes, para un usuario concreto y en tantas campañas como participe.
En dicha tabla hay registros para el user con id=0 que se toman como registros por defecto. Es decir, si busco el id_user=100 para el mes=10 y anio=2012 y existe, cojo el valor del campo alta correspondiente, pero si no existe, cojo el registro de ese mes y año para el id_user=0.
La consulta es esta:

Código SQL:
Ver original
  1. SELECT SUM(ALTAS)
  2.     FROM CAMPAIGNS c
  3.     WHERE id_user =
  4.       (SELECT MAX(id_user)
  5.        FROM CAMPAIGNS
  6.        WHERE id_user IN (100, 0)
  7.         AND ano = c.ano
  8.         AND mes = c.mes)
  9.       AND c.ano = 2012
  10.       AND c.mes = 10;

Esto me funciona, pero creo que se podría optimizar. ¿Se os ocurre cómo?

Gracias por adelantado

Última edición por gnzsoloyo; 17/10/2012 a las 11:21 Razón: Sin etiquetado