¿como traer X registros de una tabla?

28/11/2003 - 16:07 por ofl666 | Informe spam
Buenas...
me explico, tengo una consulta sql tal que asi:
SELECT * FROM Clientes
estoy trabajando con una BBDD gigante por lo que la
consulta me tarda un rato considerable, cosa inaceptable.
A raiz de esto quiero hacer la consulta en varias partes
(que luego ya me las ingeniare para meterlas en hilos
diferentes)¿como puedo indicar en SQL "traeme los 100
primeros registros de la tabla Clientes", no me valen
soluciones del tipo SELECT * FROM Clientes WHERE
CodigoCliente < 100, ya que los códigos de cliente pueden
estar todos seguidos o no estarlo.
Ufffff espero haberme explicado.
Muchas gracias peña.

Preguntas similare

Leer las respuestas

#6 Miguel Egea
29/11/2003 - 16:15 | Informe spam
Muy buen truco, yo uso algo parecido, salvo que no devuelvo el último nunca
y dejo a pas aplicaciones cliente que lo hagan.

Gracias Javier


=Miguel Egea
http://www.portalsql.com
Microsoft SQL-SERVER MVP.
Brigada Anti-Cursores
Aviso de Seguridad
http://www.microsoft.com/spain/tech...9-USER.asp
==
"Javier Loria" escribió en el mensaje
news:
Hola Oracio:
A mi me gusta utilizar el siguiente mecanismo:
/* Paginacion de Autores */
CREATE PROCEDURE Autores_Sel
@LastNombre varchar(40) = NULL OUTPUT
AS
SET NOCOUNT ON

SELECT TOP 5 WITH TIES *
FROM AUTHORS
WHERE CASE WHEN @LastNombre IS NULL THEN 1
WHEN @LastNombre<au_fname THEN 1
ELSE 0
END=1
ORDER BY AU_FNAME
SELECT @LastNombre=MAX(AU_FNAME)
FROM ( SELECT TOP 5 au_fname
FROM AUTHORS
WHERE CASE WHEN @LastNombre IS NULL THEN 1
WHEN @LastNombre<au_fname THEN 1
ELSE 0
END=1
ORDER BY AU_FNAME) AS N
GO
/* Fin de Declaracion de Procedimiento */

/* Uso de Procedimiento */
DECLARE @UltimoApellido varchar(40)

EXEC Autores_Sel @UltimoApellido OUTPUT
EXEC Autores_Sel @UltimoApellido OUTPUT
EXEC Autores_Sel @UltimoApellido OUTPUT
EXEC Autores_Sel @UltimoApellido OUTPUT
EXEC Autores_Sel @UltimoApellido OUTPUT
/* Fin de Procedimiento */

Esto te permitira en la aplicacion cliente pedir bloques de filas
"consecutivos", usando el filtro y la siguiente corrida obtiene los
siguientes.


Javier Loria
Costa Rica
Se aprecia la inclusion de DDL (CREATE, INSERTS, etc.)
que pueda ser copiado y pegado al Query Analizer.
La version de SQL y Service Pack tambien ayuda.

Miguel Egea escribio:
> Hola, tienes que poner un order by, para saber cuales son los
> segundos 150 registros, si tu orden es la pk simplemente
> select top 150 * from clientes where id>UltimoId
>
>
>
> "Horacio" escribió en el mensaje
> news:
>> Pero
>>
>> SELECT TOP 150 * FROM Clientes
>>
>> trae los primeros 150 registros. ¿Cómo traigo los segundos 150
>> registros?
>>
>> Horacio


email Siga el debate Respuesta Responder a este mensaje
Ads by Google
Help Hacer una pregunta AnteriorRespuesta Tengo una respuesta
Search Busqueda sugerida