总结了一下mysql,sql server,oracle数据库分页查询的区别:
一、mysql:
mysql提供了 LIMIT函数。一般只需要直接写到sql语句后面就行了。
例如:
LIMIT子 句可以用来限制由SELECT语句返回过来的数据数量,它有一个或两个参数,如果给出两个参数, 第一个参数指定返回的第一行在所有数据中的位置,从0开始(注意不是1),第二个参数指定最多返回行数。例如:
select * from table WHERE … LIMIT 10; #返回前10行
select * from table WHERE … LIMIT 0,10; #返回前10行
select * from table WHERE … LIMIT 10,20; #返回第10-20行数据
二、sql server:
SQLServer数据库又分为 SQLServer2000和SQLServer2005。一般比较简单的方法是通过TOP函数来实现
SQLServer2005提供了一个row_number()函数。 ROW_NUMBER() 就是生成一个顺序的行号,而他生成顺序的标准,就是后面紧跟的OVER(ORDER BY ReportID),其中ReportID可 以是联合主键。例如:
SELECT TOP 10 *? FROM
(
SELECT top 10 ROW_NUMBER() OVER (ORDER BY ReportID) AS RowNo
FROM TABLE
) AS A
WHERE RowNo > pageIndex*10 (pageIndex就是我们需要数据的页数.)
三、oracle:ORCALE数据库实现分页查询可以使用 row_number()函数或者使用rownum 虚列两种方法。
第一 种:利用分析函数row_number() 方法
select * from(
select t.*,row_number() over (order by t1.id) rowno from TABLE1
)
where rowno between 21 and 40;
第二种:直接 使用rownum 虚列
select * from
(select t.*,rownum as rowno from TABLE1 )
where rowno between 10 and 20
这两种方法比较,显然第二种方法比较好。因为不用order by语句,会提高检索数据的速度的,尤其数据量越大时,第二种方法快速检索数据越明显