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

Eficiencia de una vista con funciones SQL SERVER 2000

Estas en el tema de Eficiencia de una vista con funciones SQL SERVER 2000 en el foro de Bases de Datos General en Foros del Web. Hola a todos, por error publiqué este post en el foro de .NET y lo vuelvo a poner en este foro, si no es lo ...
  #1 (permalink)  
Antiguo 28/02/2005, 11:10
Avatar de cableh  
Fecha de Ingreso: diciembre-2004
Mensajes: 54
Antigüedad: 19 años, 5 meses
Puntos: 0
Eficiencia de una vista con funciones SQL SERVER 2000

Hola a todos, por error publiqué este post en el foro de .NET y lo vuelvo a poner en este foro, si no es lo correcto corregidme.

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.
  #2 (permalink)  
Antiguo 28/02/2005, 11:21
Avatar de Linterns
Colaborador
 
Fecha de Ingreso: diciembre-2001
Mensajes: 2.799
Antigüedad: 22 años, 5 meses
Puntos: 11
Te recomiendo que se hagas la segunda opcion ya que una consulta en un tiempo determinado te consumir´´a menos recurso que una o varias columnas adicionales a las tablas.

Si el problema es de lentitud simplemente deberas mejorar el Query aunque consultas de tipo COUNT y Max para saber el total y ultimo usuario no son pesados si solo obtienes dichos datos
__________________
Bien se puede recibir una puñalada sin adulación,
pero rara vez se recibe una adulación sin puñalada
** ***
  #3 (permalink)  
Antiguo 01/03/2005, 03:54
Avatar de cableh  
Fecha de Ingreso: diciembre-2004
Mensajes: 54
Antigüedad: 19 años, 5 meses
Puntos: 0
Muchas gracias Linterns, es lo que quería oir.

Salu2.
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 07:36.