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

Optimizar query

Estas en el tema de Optimizar query en el foro de Oracle en Foros del Web. 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 ...
  #1 (permalink)  
Antiguo 17/10/2012, 10:03
 
Fecha de Ingreso: octubre-2012
Mensajes: 1
Antigüedad: 12 años, 1 mes
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
  #2 (permalink)  
Antiguo 02/11/2012, 06:23
 
Fecha de Ingreso: noviembre-2012
Mensajes: 1
Antigüedad: 12 años
Puntos: 0
Respuesta: Optimizar query

Hola,
la optimización depende mucho del tamaño de la tabla y de la frecuencia de la consulta. Es decir, puedes usar index para mejorar la consulta siempre que el coste para la Base de datos sea justificable.
Lo mejor usar una herramienta de optimización: Ejemplo algunas de las integradas en toad for oracle.

Para ayudarte inicialmente te dirá que
AND c.ano = 201210. AND c.mes = 10 debe estar antes de la subconsulta y no como lo has puesto.
Saludos.

Etiquetas: funcion, query, 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 11:15.