Sobre un SP

25/04/2008 - 22:02 por Penta | Informe spam
Estimados.
Utilizo SS2000 SP4

Si quisera ordenar un recordset por el campos A o por campo B o por
campo C.

Que es mejor copiar la consulta 3 veces y cada una ordenada por el
campo en cuestion y mostrar el Select que que corresponda ??

O
Hacer 3 SP ??


Esto dado que en cada Select ordenado se hacen operaciones distintas
en el select, por poner un ejemplo una suma otra da el promedio.

Atte.
Penta.

Preguntas similare

Leer las respuestas

#11 Maxi Accotto
28/04/2008 - 00:37 | Informe spam
Hola Jony, hay varias tecnicas de paginacion en 2000 y 2005, en 2000 podes o
usar tablas temporales o bien Stores con el uso de TOP y algun que otro
truco, en la pagina de Miguel www.portalsql.com encontraras un excelente
articulo sobre paginacion en 2000.

En 2005 el rownumber puede ayudar pero hay quienes no nos gusta mucho porque
al final terminas materializando el valor ya que no podes hacer un where
directo sobre el row_number() :(, pero son detalles nomas, es mas simple de
usar eso si :-)


Microsoft MVP SQLServer
www.sqltotalconsulting.com
-

"Jhonny Vargas P." escribió en el mensaje
de noticias:#

"Alfredo Novoa" escribió en el mensaje de
noticias:1893c18i4dj63$
El Sat, 26 Apr 2008 12:23:31 -0400, Jhonny Vargas P. escribió:

Con lo que dices... tendríamos que enviar "todo el conjunto de datos" a
la
capa que hace el llamado, ordenar y paginar.



Si, imagínate hacer esto con una tabla con un millón de registros en un
servidor distinto. Sería un disparate.



Exacto... claro que viene todo un tema de índices que hay de por medio...



¿Para que voy a devolver la gran cantidad de registros a la capa que me
hace
el llamado si solo necesito "x" registros por página?



Por que la religión de Maxi le prohibe hacer consultas desde las
aplicaciones, y contra la fe no hay razón que valga.



Que lamentable tu expresión sobre un gran valor de este foro...
independiente de que puedas tener discrepancias en el uso de algunas
cosas, realmente valora la colaboración y sin duda el conocimiento que
tiene de SQL Server... por mi parte he aprendido muchísimo...



Pero los demás podemos usar una consulta con ROW_NUMBER() para
automatizar
la paginación.



Tienes varias formas... yo utilizo tablas temporales, ya que aún tengo
servidores en SQL Server 2000


No es más simple:
Buscar - Ordenar, Paginar y Devolver solo los "x" registros de la
página
los datos están en el mismo servidor y no estás enviando información que
no
requieres a otra capa.. que puede ser otro servidor distinto...



Evidentemete si es más simple.




Para el caso que puse.


PD: sin ánimos de causar polémica... solo de entregar conocimiento...


Saludos,
Jhonny Vargas P.
http://msmvps.com/jvargas
Santiago de Chile
Respuesta Responder a este mensaje
#12 Eduardo
28/04/2008 - 03:13 | Informe spam
Lo que quiero decir es que antes de poner un order by en un SP o una query
se analice bien eso y no se ponga porque si, cuando tienes millones de
registros esto te puede jugar encontra nomas , solo eso!




Cierto, hay que analizarlo bien.
Yo te puedo decir que en muchos casos normalmente habrá una selección que
ocurre antes del ordenamiento. Es muy raro que se tenga necesidad de
seleccionar y mucho menos de ordenar millones de registros. Además muchas
veces la selección puede estar determinada por el orden que se vaya a dar a
la presentación. Ejemplo: el usuario elija un rango de fechas cuando se
ordenarán por fecha, un rango de números cuando se ordenarán por número, un
rango de nombres cuando se ordenarán alfabéticamente. En todos esos casos.
que aunque no siempre se dan, debería ser mejor traerlos seleccionados y
ordenados desde el servidor porque la propia selección aprovecharía el
ordenamiento o viceversa.
Pero pongamos que sean no millones sino unos miles de registros para un
reporte largo, por exagerar. Con los índices adecuados aún sean parciales
pienso que ha de ser más rápido que ordenar en la aplicación. (No creo que
Ado.net sea para nada eficiente ordenando en memoria.)
Y si son consultas que se repiten con frecuencia y no existen los índices
pues se pueden crear en el servidor para mejorar su rendimiento.
En caso de pocos registros no creo que haya problema.

Saludos
Respuesta Responder a este mensaje
#13 Pablo Roca
28/04/2008 - 10:47 | Informe spam
Pues Alfredo,

Te aconsejo que leas mas este foro y veas que Maxi aporta bastante al foro y
con una gran cantidad de valor en sus respuestas.

Eso si, lo cortés no quita lo valiente .. y estoy de acuerdo con vosotros,
mejor hacer todo en el lado del servidor (y no tienen porque ser SPs)


Saludos,

Pablo Roca
La Coruna - Spain
http://www.portalfox.com
Respuesta Responder a este mensaje
#14 Alfredo Novoa
28/04/2008 - 11:09 | Informe spam
Hola Pablo,

El Mon, 28 Apr 2008 10:47:42 +0200, Pablo Roca escribió:

Te aconsejo que leas mas este foro y veas que Maxi aporta bastante al foro y
con una gran cantidad de valor en sus respuestas.



Es que no me suelo fijar en los nombres.

Eso si, lo cort豠no quita lo valiente .. y estoy de acuerdo con vosotros,
mejor hacer todo en el lado del servidor (y no tienen porque ser SPs)



¿A que es un coñazo tener que hacer un SP para todo? :)


Saludos
Alfredo
Respuesta Responder a este mensaje
#15 Pablo Roca
28/04/2008 - 11:18 | Informe spam
"Alfredo Novoa" escribió

¿A que es un coñazo tener que hacer un SP para todo? :)



:)) Ya no solo un coñazo, sino que dependiendo como uno haga los SPs, la
optimización puede llegar a ser peor.

Sin citar al post de Eduardo Quintás sobre que los SPs entre Bases de datos
no se cachean, eso me dejó muerto! Adios a hacer todo (o mucho) con SPs!

SPs si, pero con mesura, mucha mesura en no volverse loco uno a hacer SPs
para todo. Solo en ciertos casos.


Saludos,

Pablo Roca
La Coruna - Spain
http://www.portalfox.com
Respuesta Responder a este mensaje
Ads by Google
Help Hacer una preguntaSiguiente AnteriorRespuesta Tengo una respuesta
Search Busqueda sugerida