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 originalSELECT SUM(ALTAS)
    FROM CAMPAIGNS c
    WHERE id_user =
      (SELECT MAX(id_user)
       FROM CAMPAIGNS 
       WHERE id_user IN (100, 0)
        AND ano = c.ano
        AND mes = c.mes)
      AND c.ano = 2012
      AND c.mes = 10;
  
Esto me funciona, pero creo que se podría optimizar. ¿Se os ocurre cómo? 
Gracias por adelantado