Paginar nuestras consultas resulta que siempre aligera más la carga del motor de base de datos, siempre y cuando éste tenga los índices donde corresponden y no en cualquier columna o peor aun, no tener indices, ya que sólo se transmiten los datos a mostrarse en el momento, ésta característica se siente mucho mejor cuando estamos trabajando con aplicaciones web, u otras que corran sobre una red de baja velocidad o alta concurrencia. De ahí su gran implementación en los últimos tiempos.
Para lograrlo necesitamos de la ayuda de nuestro motor de base de datos, ésta vez veremos el ejemplo en 4 motores muy populares, SQL Server, Oracle, MySQL y PostgreSQL. Personalmente creo que es más sencillo implementarlo en MySQL y PostgreSQL, seguido de Oracle y SQL Server. Aunque esto no hace que sea difícil en los últimos, sino más bien no tienen una sintaxis especifica para ésta función como lo tienen MySQL y PostgreSQL.
MySQL y PostgreSQL
1
2
| -- devuelve los primeros 10 registros a partir del 40° registro
SELECT * FROM TABLA LIMIT 40, 10 |
ORACLE
SQL SERVER 2000
1
2
3
4
| -- devuelve los registros 40° al 49°, el primer top indica cuantos registros y el segundo del subquery debe ser la cantidad deseada * la pagina -1
SELECT TOP 10 T.* FROM TABLA AS T WHERE T.ID NOT IN
( SELECT TOP 39 id from tabla order by id desc )
ORDER BY T.ID DESC |
SQL SERVER 2005/2008
1
2
| -- Ésta consulta también devuelve las filas 40° al 49° encontradas
SELECT * FROM ( SELECT *, ROW_NUMBER() OVER (ORDER BY ID) AS FILA FROM TABLA ) AS ALIAS WHERE FILA > 40 AND FILA <= 49 |
O.O MySQL y PostgreSQL
en informix seria de este modo
SELECT skip 20 first 10 campo FROM tabla
donde skip le dice a la consulta que se “salte” los primeros n y first le dice que obtenga los primeros m
Muchas gracias por el aporte!!
Saludos.
buen aporte amigo, el codigo se entiende, podria ser mucho mejor si el codigo no me mostrara el numero de filas al momento de devolver los resultados !! saludos
Excelente aporte