post icon

Realizar Consultas Paginadas en SQL Server, MySQL, Oracle & PostgreSQL

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
SELECT * FROM TABLA LIMIT 10
1
2
-- devuelve los primeros 10 registros a partir del 40° registro
SELECT * FROM TABLA LIMIT 40, 10

ORACLE

1
2
3
-- devuelve los registros del 40° al 49° semejante al de MySQL
SELECT * FROM ( SELECT TABLA.* , ROWNUM AS FILAS FROM TABLA )
WHERE FILAS BETWEEN 40 AND 49

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

5 Comentarios

Deja tu Comentario
  1. pepito PERU Mozilla Firefox Windows
    30 enero 2012 at 14:57 #

    O.O MySQL y PostgreSQL

  2. abraham MEXICO Mozilla Firefox Windows
    4 noviembre 2011 at 14:11 #

    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

    • GeekZero PARAGUAY Google Chrome Windows
      4 noviembre 2011 at 14:15 #

      Muchas gracias por el aporte!!

      Saludos.

  3. George Mozilla Firefox Windows
    10 julio 2011 at 22:18 #

    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

  4. elperucho ARGENTINA Google Chrome Windows
    27 julio 2010 at 07:20 #

    Excelente aporte

Responder