`
皖雪欢飞
  • 浏览: 24489 次
  • 性别: Icon_minigender_2
  • 来自: 北京
社区版块
存档分类
最新评论

sql server,mysql,oracle分页查询的区别

 
阅读更多

总结了一下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语句,会提高检索数据的速度的,尤其数据量越大时,第二种方法快速检索数据越明显

分享到:
评论

相关推荐

Global site tag (gtag.js) - Google Analytics