三种数据库利用SQL语句进行高效果分页

作者:10687 来源:赛迪网 时间:2008-11-28 14:52:00 

在程序的开发过程中,处理分页是大家接触比较频繁的事件,因为现在软件基本上都是与数据库进行挂钓的。但效率又是我们所追求的,如果是像原来那样把所有满足条件的记录全部都选择出来,再去进行分页处理,那么就会多多的浪费掉许多的系统处理时间。为了能够把效率提高,所以现在我们就只选择我们需要的数据,减少数据库的处理时间,以下就是常用SQL分页处理:

1、SQL Server、Access数据库

这都微软的数据库,都是一家人,基本的操作都是差不多,常采用如下分页语句:

PAGESIZE:每页显示的记录数

CURRENTPAGE:当前页号

数据表的名字是:components

索引主键字是:id


select top PAGESIZE * from components where id not in
(select top (PAGESIZE*(CURRENTPAGE-1))
id from components order by id)order by id

如下列:


select top 10 * from components where id not in
(select top 10*10 id from components order by id)
order by id

 

从101条记录开始选择,只选择前面的10条记录
 
2、Oracle数据库

因为Oracle数据库没有Top关键字,所以这里就不能够像微软的数据据那样操作,这里有两种方法:

(1)、一种是利用相反的。

PAGESIZE:每页显示的记录数

CURRENTPAGE:当前页号

数据表的名字是:components

索引主键字是:id


           

select * from components where id not
in(select id from components where               
rownum<=(PAGESIZE*(CURRENTPAGE-1)))
and rownum<=PAGESIZE order by id;

如下例:


select * from components where id not in
(select id from components where rownum<=100)
and rownum<=10 order by id;  
从101到记录开始选择,选择前面10条。

(2)、使用minus,即中文的意思就是减去。


select * from components where rownum
<=(PAGESIZE*(CURRENTPAGE-1)) minus
select * from components where rownum
<=(PAGESIZE*(CURRENTPAGE-2));
如例:select * from components where
rownum<=10 minus select * from components
where rownum<=5;.

(3)、一种是利用Oracle的rownum,这个是Oracle查询自动返回的序号,一般不显示,但是可以通过select rownum from [表名]看到,注意,它是从1到当前的记录总数。


select * from (select rownum tid,components.
* from components where rownum<=100) where tid<=10;

标签:
0
投稿

猜你喜欢

  • utf8_unicode_ci与utf8_general_ci的区别

    2010-03-03 15:54:00
  • Stored Procedure(存储过程)编写经验和优化措施

    2008-03-12 12:03:00
  • CSS Border使用小分享

    2010-08-12 14:34:00
  • 在ASP中通过oo4o连接Oracle数据库的例子

    2008-10-12 12:55:00
  • 如何解决ASP脚本运行超时的错误

    2007-10-14 11:38:00
  • asp form 表单验证函数

    2011-04-04 11:10:00
  • 未能找到存储过程’master.dbo.xp_fileexist’解决方法

    2011-03-13 09:29:00
  • 关于淘宝网导航几个让人不解的问题

    2009-03-24 21:08:00
  • Dreamweaver4探谜系列(1)

    2010-09-05 21:12:00
  • 谈谈网页设计中的字体应用 (3) 实战应用篇·上

    2009-11-24 13:09:00
  • 在系统崩溃的时候如何恢复原有的数据

    2009-01-08 13:26:00
  • 实现div可编辑的常见方法

    2007-11-06 12:02:00
  • Oracle数据库处理多媒体信息

    2010-07-16 13:01:00
  • 高效率的GetRows()的使用方法

    2008-09-23 18:29:00
  • MYSQL在一个字段值前面加字符串

    2010-10-14 14:28:00
  • 如何检测用户第一次访问我的网站并显示友好信息?

    2009-11-25 20:33:00
  • 通过表单的做为二进制文件上传request.totalbytes提取出上传的二级制数据

    2011-03-16 10:39:00
  • Sql Server 数据库超时问题的解决方法

    2009-01-13 14:11:00
  • 详细讲解如何为MySQL数据库添加新函数

    2008-11-27 17:06:00
  • asp.net性能的技巧

    2007-10-07 21:55:00
  • asp之家 网络编程 m.aspxhome.com