martes, 13 de mayo de 2014

Paginacion Mysql, Oracle y SQLServer

Hola

En esta entrada voy ha explicar como hacer paginación en la tres bases de datos más usadas en el mundo, es decir las que he usado yo hasta hoy, lo primero es decir que es paginación.

Paginación



La paginación consistente en traerse una cantidad de registros y de ser necesarios más saltar a una página posterior.

Cuando usamos ORM, Hibernate, Mybatis, etc..., Lo mejor es hacer sql nativas que van a ir muy rápidas. Lo malo es que cada base de datos tiene un forma distintas de hacerlo, no hay una query común que sirva para todas las bases de datos.

Mysql

Mysql tiene la clasula limit y offset, limit le indica el número máximo de registro y offset indica la posición del registro que se va empezar.

   
select columna_1, columna_2 
from tabla 
where columna_3 = 'algo' 
order by columna_1 
limit 10  
offset 0


Oracle

Oracle tiene la clasula rownum, rownum es una seudo columna que devuelme para cada registro del resultado de la consulta una poscion numerica.

SELECT * FROM ( 
SELECT a.*, rownum minimun FROM ( 
select columna_1, columna_2 from tabla
 where columna_3 = 'algo'
 order by columna_1
 ) a
 WHERE rownum <= 10
)WHERE minimun > 0

SQLServer

SQLServer tiene la clasula top, top se emplea para obtener sólo  una cantidad limitada de registros, los primeros n registros de una consulta.

select TOP 10 b.*
 FROM
 (
 SELECT ROW_NUMBER() OVER 
 (
 order by columna_1
 ) as row_number, *
 FROM
 (
 select columna_1, columna_2
 from tabla
 ) AS a
 where columna_3 = 'algo'
) AS b
 where b.row_number > 0

No hay comentarios:

Publicar un comentario