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.

Preguntas similare

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.


Respuesta Responder a este mensaje
#2 Víctor
20/09/2005 - 10:04 | Informe spam
Entonces, ¿cuándo es útil utilizar una vista?

"Maxi" escribió en el mensaje
news:
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.
>
>


Respuesta Responder a este mensaje
#3 Eleazar
26/09/2005 - 18:19 | Informe spam
Hola yo uso vistas cuando los datos estan en mas de una tabla y evitar hacer
una tercera tabla e insertarle registros por ejemplo:
en excel no puedes tomar los valores de un result set(query) sino desde los
objetos como son tablas y vistas entonces imagina que esa vista es la
referencia al query
espero te ayude

"Víctor" escribió en el mensaje
news:
Entonces, ¿cuándo es útil utilizar una vista?

"Maxi" escribió en el mensaje
news:
> 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.
> >
> >
>
>


email Siga el debate Respuesta Responder a este mensaje
Ads by Google
Help Hacer una preguntaRespuesta Tengo una respuesta
Search Busqueda sugerida