分页有真分页和假分页,假分页就是把数据全部取出,在显示出来之前处理要显示多少记录,而真分页是在数据库拿出一页数据的数据直接显示。假分页效率低下,占用服务器和客户端资源大,如果数据量很大,会造成成服务器内存不足而使程序异常,所以不推荐使用。而真分页依赖数据库支持,核心思想就是从行号 为startRow 的记录开始拿数据,拿一个pageSize 的数据。
SQL Server2005有ROW_NUMBER() 支持分页
ORACLE有rownum
MySQL有limit
SQL Server2000那个top并不是专门用于分页,只是取结果集的前N条记录,不怎么好用。
如果项目中数据量比较大,就不可以使用假分页。项目如果使用 Hibernate技术,Hibernate支持支持分页,但它的分页依赖数据库的支持,是真分页,这个可以从Hibernate构造的SQL语句看出来。