Ver Mensaje Individual
  #10  
Antiguo 24-09-2015
Avatar de RONPABLO
[RONPABLO] RONPABLO is offline
Miembro Premium
 
Registrado: oct 2004
Posts: 1.514
Reputación: 21
RONPABLO Va por buen camino
Cita:
Empezado por roman Ver Mensaje

Por cierto, ¿qué son funciones windows?

// Saludos
imaginemos una tabla a la que le hacemos una consulta:
Código SQL [-]
Select Id, Nombre, Sueldo from tabla where fecha between :f1 and :f2


Cita:
Empezado por ResultadoDelQuery
ID / Nomre / Sueldo
1 / Andres / 200
4 / Carlos / 300
9 / Clara / 450
Se puede decir que ese resultado es una ventana que "mira" algo de la información en una tabla, las funciones ventana son funciones que solo tienen dominio sobre ese resultado y en ellas se puede obtener entre otras cosas, el numero de Columna, el máximo valor o el mínimo valor de esa ventana, la sumatoria, en fin, hay muchas cosas que se pueden ver y acá hablan un poco de ello, por ejemplo normalmente si yo quiero sacar un porcentaje del sueldo en la consulta anterior haría algo como:

Código SQL [-]
Select 
  Id, Nombre, Sueldo,
  sueldo / (select sum(sueldo) from tabala  where fecha between :f1 and :f2) porcentaje
from tabla where fecha between :f1 and :f2

con una función window o ventana sería:

Código SQL [-]
Select 
  Id, Nombre, Sueldo,
  sueldo / sum(salary) over () porcentaje
from tabla where fecha between :f1 and :f2

el sum normalmente debe ser usado en un group by, pero al tener la instrucción over después indica que es una función de ventana don el sum se hará sobre todos los valores de el campo sueldo que arroja la consulta, dentro del paréntesis del over pueden ir variqs clausulas de ordenamiento.

Ahora si vemos los dos querys anteriores notaremos que en el primero hay un subquery en el cual tiene su propia carga de información y se está repitiendo gran cantidad de lo que ya se ha hecho, pero además se está haciendo registro por registro, así pues si la tabla tiene 2 millones de registros y se está devolviendo 3 resultados, entonces se hará 3 veces el mismo query consultando sobre 2 millones de registros de la tabla para devolver el sum que se obtiene de apenas tres registros, mientras que en el segundo query con la función de ventana solo se está haciendo un sum sobre 3 registros lo cual deberá repercutir tremendamente en eficiencia y velocidad
__________________
"Como pasa el tiempo..... ayer se escribe sin H y hoy con H"
Responder Con Cita