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

Clausula limit( inicio, fin) en MSSQL 2000

Estas en el tema de Clausula limit( inicio, fin) en MSSQL 2000 en el foro de SQL Server en Foros del Web. Intento hacer este limit en MSSQL pero tarda demasiado, la forma que usé es el tipico Código: SELECT * FROM (SELECT TOP 100 * FROM ...
  #1 (permalink)  
Antiguo 15/01/2009, 13:28
 
Fecha de Ingreso: julio-2008
Mensajes: 3
Antigüedad: 16 años, 5 meses
Puntos: 0
Clausula limit( inicio, fin) en MSSQL 2000

Intento hacer este limit en MSSQL pero tarda demasiado, la forma que usé es el tipico

Código:
SELECT * FROM 	(SELECT TOP 100 * 
		FROM 	(SELECT TOP  10000 * 
			FROM [Employees] 
			ORDER BY [EmployeeID]  ASC) AS tbl1 
		ORDER BY EmployeeID DESC) AS tbl2 
ORDER by EmployeeID ASC
El detalle es que tarda demasiado si el top es muy grande, estoy hablando de 15000 registros a 65000, incluso si pongo un top 10,000 el servidor excede el tiempo de espera. Esta consulta la estoy usando para un pagination

No saben una manera mas eficiente de realizar este top?, si no existe, los de microsoft deberian crearlo, por que es una lata.

Aclarando que la consulta si funciona correctamente, solo que tarda mucho !!, gracias por ayudar ...
  #2 (permalink)  
Antiguo 15/01/2009, 14:13
 
Fecha de Ingreso: mayo-2006
Ubicación: Bogotá
Mensajes: 2.061
Antigüedad: 18 años, 7 meses
Puntos: 50
Respuesta: Clausula limit( inicio, fin) en MSSQL 2000

el problema no es del top, el problema es que usted esta haciendo un select de un selec de un select lo cual hace tardar demasiado a SQl.

Lo que debe hacer es organizar la consulta y no usar tantos selects que le traiga los mismos resultados.

Si no lo sabe hacer expliquenos la consulta un poco mas haber si le podemos ayudar a crearlo.

es mas la consulta esta como mal realziada porque segun entiendo ocn esto no mas le deberia traer los mismos resultados


SELECT TOP 100 * FROM Employees ORDER BY EmployeeID ASC
  #3 (permalink)  
Antiguo 16/01/2009, 08:11
Avatar de iislas
Colaborador
 
Fecha de Ingreso: julio-2007
Ubicación: Mexico, D.F.
Mensajes: 6.482
Antigüedad: 17 años, 5 meses
Puntos: 180
Respuesta: Clausula limit( inicio, fin) en MSSQL 2000

La otra, es buscar en este mismo foro PAGINACION, ya hemos tratado el asunto, saludos.
  #4 (permalink)  
Antiguo 19/01/2009, 16:10
 
Fecha de Ingreso: diciembre-2008
Mensajes: 39
Antigüedad: 16 años
Puntos: 1
Respuesta: Clausula limit( inicio, fin) en MSSQL 2000

Cita:
Iniciado por helacer Ver Mensaje
el problema no es del top, el problema es que usted esta haciendo un select de un selec de un select lo cual hace tardar demasiado a SQl.

Lo que debe hacer es organizar la consulta y no usar tantos selects que le traiga los mismos resultados.

Si no lo sabe hacer expliquenos la consulta un poco mas haber si le podemos ayudar a crearlo.

es mas la consulta esta como mal realziada porque segun entiendo ocn esto no mas le deberia traer los mismos resultados


SELECT TOP 100 * FROM Employees ORDER BY EmployeeID ASC
La consulta es correcta. La funcionalidad que emula, son los limits y offsets que hay en, por ejemplo mysql, o mssql 2005.
La consulta que usted propone no hace mas que seleccionar los primeros 100 usuarios, pero no permite especificar a partir de que numero de registros, elegir los 100 que le interesan.

No existe solucion, facil, ni performante.
http://www.forosdelweb.com/f87/limit-con-sql-server-no-existe-584625/
ahi hay un ejemplo, posiblemente mas performante, pero menos simple.
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 23:55.