Duda sobre las vistas y Stored Procedure

19/09/2005 - 17:10 por Víctor | Informe spam
Hola.

Una dudilla.

Tengo la siguiente consulta:

SELECT SUM(aco.plazas) AS plazas, SUM(aco.vacios) AS vacias,
aco.vgr_codgrup AS grup_codi, CASE WHEN grup_cerrado IN (1, 3) THEN 1 ELSE 0
END AS cerrado, aco.mts AS metros,
aco.pax, aco.coches, aco.nac_codaco, aco_capacidad, aco_nombre,
RTRIM(aco_siglas) AS aco_siglas, grup_nombre,
grup_fechsa AS orden, CONVERT(varchar, grup_fechsa, 103) AS grup_fechsa,
grup_horasa, grup_horall
FROM
(
SELECT nac_numero, nac_codaco,
MIN(CASE nac_vacio WHEN 1 THEN nac_libres ELSE CASE nac_reservado WHEN 1
THEN 0 ELSE nac_libres END END) AS plazas,
MIN(nac_vacio) AS vacios, vgr_codgrup, MIN(via_metdis) AS mts,
MIN(via_pax_disp) AS pax, MIN(via_coches_disp) AS coches
FROM ic_numaco
INNER JOIN ic_viaje ON via_codi = nac_via_codi
INNER JOIN ic_barco ON via_codbar = bar_codi
INNER JOIN ic_viagrup ON via_codi = vgr_codvia
INNER JOIN ic_grupoviaje ON grup_codi = vgr_codgrup
WHERE (grup_fechsa BETWEEN @desde AND @hasta) AND (grup_codlin = @linea)
AND (nac_codaco <> @acomodacion) AND (nac_carga <> 1) AND (bar_tipo = 0)
GROUP BY vgr_codgrup, nac_codaco, nac_numero

Ahora mismo la tengo metida en un Store Procedure, pero no se si es mejor (a
efectos de rendimiento, pues este SP es llamado por unos 20 usuarios casi a
la vez) utilizar una Vista.

Supongo que en la vista tendría la consulta sin el Where, y este Where lo
pongo dentro del nuevo SP.

¿Es así o estoy mezclando 'peras' con 'uvas'?

Es que esto de las vistas me tiene un poco liado.

Gracias.
 

Leer las respuestas

#1 Maxi
19/09/2005 - 19:54 | Informe spam
Hola, si es una vista cada vez que la ejecuten se calculara el plan de
ejecucion, si es un Sp's esto no sucedera por lo cual es mas optimo


Salu2
Maxi


"Víctor" escribió en el mensaje
news:
Hola.

Una dudilla.

Tengo la siguiente consulta:

SELECT SUM(aco.plazas) AS plazas, SUM(aco.vacios) AS vacias,
aco.vgr_codgrup AS grup_codi, CASE WHEN grup_cerrado IN (1, 3) THEN 1 ELSE
0
END AS cerrado, aco.mts AS metros,
aco.pax, aco.coches, aco.nac_codaco, aco_capacidad, aco_nombre,
RTRIM(aco_siglas) AS aco_siglas, grup_nombre,
grup_fechsa AS orden, CONVERT(varchar, grup_fechsa, 103) AS grup_fechsa,
grup_horasa, grup_horall
FROM
(
SELECT nac_numero, nac_codaco,
MIN(CASE nac_vacio WHEN 1 THEN nac_libres ELSE CASE nac_reservado WHEN 1
THEN 0 ELSE nac_libres END END) AS plazas,
MIN(nac_vacio) AS vacios, vgr_codgrup, MIN(via_metdis) AS mts,
MIN(via_pax_disp) AS pax, MIN(via_coches_disp) AS coches
FROM ic_numaco
INNER JOIN ic_viaje ON via_codi = nac_via_codi
INNER JOIN ic_barco ON via_codbar = bar_codi
INNER JOIN ic_viagrup ON via_codi = vgr_codvia
INNER JOIN ic_grupoviaje ON grup_codi = vgr_codgrup
WHERE (grup_fechsa BETWEEN @desde AND @hasta) AND (grup_codlin = @linea)
AND (nac_codaco <> @acomodacion) AND (nac_carga <> 1) AND (bar_tipo = 0)
GROUP BY vgr_codgrup, nac_codaco, nac_numero

Ahora mismo la tengo metida en un Store Procedure, pero no se si es mejor
(a
efectos de rendimiento, pues este SP es llamado por unos 20 usuarios casi
a
la vez) utilizar una Vista.

Supongo que en la vista tendría la consulta sin el Where, y este Where lo
pongo dentro del nuevo SP.

¿Es así o estoy mezclando 'peras' con 'uvas'?

Es que esto de las vistas me tiene un poco liado.

Gracias.


Preguntas similares