Foros del Web » Programación para mayores de 30 ;) » .NET »

Eficacia de una vista con funciones SQL SERVER 2000

Estas en el tema de Eficacia de una vista con funciones SQL SERVER 2000 en el foro de .NET en Foros del Web. Hola a todos, estoy diseñando un foro (ms SQL SERVER 2000, .NET c#) y en este momento se me plantea una duda: Tengo una tabla ...
  #1 (permalink)  
Antiguo 28/02/2005, 04:25
Avatar de cableh  
Fecha de Ingreso: diciembre-2004
Mensajes: 54
Antigüedad: 19 años, 4 meses
Puntos: 0
Eficacia de una vista con funciones SQL SERVER 2000

Hola a todos, estoy diseñando un foro (ms SQL SERVER 2000, .NET c#) y en este momento se me plantea una duda:

Tengo una tabla de temas y otra de posts, ¿cómo saber en cada momento cuántos posts tiene un tema, quién es el último usuario en escribir un post, cuándo se ha hecho ese post etc?.

Se me ocurren dos soluciones y me gustaría saber vuestra opinión:




1.- Crear en la tabla de temas los campos necesarios para controlarlo y actualizarlos cada vez que se inserta un post.Problemas: más espacio y controlar con triggers o sp la insercción, modificación y elminación de posts, para actualizar la tabla.




2.- Crear funciones del tipo:

ALTER FUNCTION dbo.NumeroMensajesPorTema
(@TemaId int)
RETURNS int
AS
BEGIN
declare @resul int
set @resul=(select count(*) from Posts where TemaId = @TemaId and Aprobado=1)
return @resul
END

Y desde una vista llamarlas.
ej:

select *,dbo.UltimoMensaje(TemaId),dbo.NumeroDeMensajesPo rTema(TemaID) ... from Temas

Problemas: supongo que la vista se hará más pesada, aunque no sé si podría llegar a ser un problema.



Me gusta más la segunda opción, pero quisiera saber si realmente la consulta sería con el tiempo muy lenta (del tema de eficiencia de las consultas no tengo ni idea).


Gracias de antemano.
Salu2.

Jodel, creí que estaba en el foro de Base de Datos.
Espero a que lo cambiéis (si se puede).
Lo repito en el foro de Base de Datos.

Última edición por cableh; 28/02/2005 a las 11:01 Razón: Repito el post en el foro de Bases de Datos.
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 12:42.