视频1 视频21 视频41 视频61 视频文章1 视频文章21 视频文章41 视频文章61 推荐1 推荐3 推荐5 推荐7 推荐9 推荐11 推荐13 推荐15 推荐17 推荐19 推荐21 推荐23 推荐25 推荐27 推荐29 推荐31 推荐33 推荐35 推荐37 推荐39 推荐41 推荐43 推荐45 推荐47 推荐49 关键词1 关键词101 关键词201 关键词301 关键词401 关键词501 关键词601 关键词701 关键词801 关键词901 关键词1001 关键词1101 关键词1201 关键词1301 关键词1401 关键词1501 关键词1601 关键词1701 关键词1801 关键词1901 视频扩展1 视频扩展6 视频扩展11 视频扩展16 文章1 文章201 文章401 文章601 文章801 文章1001 资讯1 资讯501 资讯1001 资讯1501 标签1 标签501 标签1001 关键词1 关键词501 关键词1001 关键词1501 专题2001
Oracle、SQLServer、Access数据库高效果分页技巧
2020-11-09 08:05:56 责编:小采
文档


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

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

下载本文
显示全文
专题