数据库分页(mysql,sqlserver,oracle)
Mysql分页:
select * from tableName where 条件 limit 当前页码*页面容量-1 , 页面容量
sqlserver 分页
思路:一般会写成一个存储过程 首先要确定的是一页你打算要多少条数据,然后可以计算出总共有多少页
这样就可以你只需要向存储过程穿进去一个参数,就是要第几页就可以实现分页功能了。
具体的sql语句如下: 方法1: 适用于 SQL Server 2000/2005
方法2: 适用于 SQL Server 2000/2005
方法3: 适用于 SQL Server 2005
说明,页大小:每页的行数;页数:第几页。使用时,请把“页大小”和“页大小*(页数-1)”替换成数字。
其它的方案:如果没有主键,可以用临时表,也可以用方案三做,但是效率会低。 建议优化的时候,加上主键和索引,查询效率会提高。
通过SQL 查询分析器,显示比较:
分页方案二:(利用ID大于多少和SELECT TOP分页)效率最高,需要拼接SQL语句
分页方案一:(利用Not In和SELECT TOP分页) 效率次之,需要拼接SQL语句
分页方案三:(利用SQL的游标存储过程分页) 效率最差,但是最为通用
oracle分页
①采用rownum 关键字( 三层嵌套)
SELECT * FROM ( SELECT A.*,ROWNUM num FROM (SELECT * FROM t_order)A WHERE ROWNUM <= 15 ) WHERE num>= 5 ;
②采用row_number 解析函数进行分页( 效率更高)
SELECT xx.* FROM ( SELECT t.*,row_number() over(ORDER BY o_id)AS num FROM t_order t )xx WHERE num BETWEEN 5 AND 15 ;
-- 返回第5-15 行数据
解析函数能用格式
函数() over(pertion by 字段 order by 字段);
Pertion 按照某个字段分区
Order 按照勒个字段排序