elhacker.net cabecera Bienvenido(a), Visitante. Por favor Ingresar o Registrarse
¿Perdiste tu email de activación?.

 

 


Tema destacado: Usando Git para manipular el directorio de trabajo, el índice y commits (segunda parte)


+  Foro de elhacker.net
|-+  Programación
| |-+  Desarrollo Web
| | |-+  Bases de Datos (Moderador: Carloswaldo)
| | | |-+  Problema paginador en Sql Server 2005
0 Usuarios y 1 Visitante están viendo este tema.
Páginas: [1] Ir Abajo Respuesta Imprimir
Autor Tema: Problema paginador en Sql Server 2005  (Leído 2,986 veces)
WHK
Moderador Global
***
Desconectado Desconectado

Mensajes: 6.605


Sin conocimiento no hay espíritu


Ver Perfil WWW
Problema paginador en Sql Server 2005
« en: 15 Julio 2013, 16:41 pm »

Hola, por razones alienigenas no puedo utilizar sql server 2012 por lo tanto crear un paginador de datos en sql server 2005 es todo un rompecabezas ya que no existe la función limit ni offset.

La idea es la siguiente: Tengo 5 mil millones de registros en una sola tabla, ahora necesito crear una pagina web que me vaya mostrando los datos de 10 en 10 con un botón para ir mostrando siguiente, siguiente, siguiente etc.

El inconveniente es que en sql server solo puedes utilizar la función top() la cual obtiene todos los datos a partir desde el id que le indiques, por ejemplo select top(10) * from tabla obtiene los primeros 10 registros pero como obtener los primeros 10 registros a partir del registro 500?

Una de las muchas soluciones es hacer un select * y luego cortar con betwen, el problema es que el motor sql va a obtener los 5 mil millones de registros y luego los cortará y eso multiplicado por la cantidad de solicitudes por segundo es un desastre.

Lo que un amigo me recomendó es mandar toda la base de datos a la memoria del servidor a traves de un grid en .net, el problema es el mismo, si tengo 5 mil millones de registros que se van a ir a memoria eso significa que voy a desperdiciar recursos cuando los datos aumenten y tenga mas sistemas que hagan lo mismo y peor aun cuando se actualice algún dato, tendría que volver a volcar todos los datos a la memoria y es una locura.

Esta es la mejor solución que he encontrado dando vueltas por ahi:
Código:
select * 
from (
    select *, ROW_NUMBER() over (order by id desc) AS idColumna
    FROM datos
) as buffer
where buffer.idColumna between 2 and 15

El problema es el mismo, que debe seleccionar los 5 mil millones de registros para poder cortarlos y entregarlos y es toda una locura porque la tabla datos contiene un campo varbinary con varios  megas por cada uno.

Cual sería la solución oficial por parte de microsoft? a caso microsoft nunca utilizó sql server que no se dieron cuenta que hacer un simple paginador era imposible?


En línea

Novlucker
Ninja y
Colaborador
***
Desconectado Desconectado

Mensajes: 10.683

Yo que tu lo pienso dos veces


Ver Perfil
Re: Problema paginador en Sql Server 2005
« Respuesta #1 en: 15 Julio 2013, 17:13 pm »

Básicamente el que has puesto ...
http://msdn.microsoft.com/en-us/library/bb445504.aspx

Esto tampoco está mal (similar al primero) ...
http://www.sqlservercentral.com/articles/T-SQL/66030/

Saludos


En línea

Contribuye con la limpieza del foro, reporta los "casos perdidos" a un MOD XD
"Hay dos cosas infinitas: el Universo y la estupidez  humana. Y de la primera no estoy muy seguro."
Albert Einstein
WHK
Moderador Global
***
Desconectado Desconectado

Mensajes: 6.605


Sin conocimiento no hay espíritu


Ver Perfil WWW
Re: Problema paginador en Sql Server 2005
« Respuesta #2 en: 15 Julio 2013, 17:26 pm »

Gracias, me ha servido para saber que traer toda una tabla a la memoria ram para luego cortarla es la solución oficial de Microsoft, ahora cuando colapse el servidor de mi trabajo por uso desmedido de memoria ram sabré a quien hecharle la culpa.
En línea

Páginas: [1] Ir Arriba Respuesta Imprimir 

Ir a:  

Mensajes similares
Asunto Iniciado por Respuestas Vistas Último mensaje
Error 40 al Conectar con SQL Server 2005 desde VB 2005
Programación Visual Basic
zantos 0 2,581 Último mensaje 26 Abril 2006, 05:23 am
por zantos
SQl SERVER 2005?
.NET (C#, VB.NET, ASP)
coolfrog 5 6,392 Último mensaje 13 Julio 2007, 00:32 am
por Alesiter
SQL server 2005 y VB 6.0
Programación Visual Basic
Zeroql 2 2,183 Último mensaje 17 Julio 2008, 19:24 pm
por Zeroql
VB 2005 + SQL server
.NET (C#, VB.NET, ASP)
jorgeriv 2 4,630 Último mensaje 4 Marzo 2009, 03:04 am
por Mr. Crowley
Php + Sql Server 2005
PHP
:ohk<any> 3 5,600 Último mensaje 21 Noviembre 2009, 00:56 am
por Mr. Crowley
WAP2 - Aviso Legal - Powered by SMF 1.1.21 | SMF © 2006-2008, Simple Machines