存档

文章标签 ‘分页’,文章数:4

在oracle中显示分页很简单, 利用两次rownum就实现了。 下面的语句用来返回DBA_OBJECTS表中类型为TABLE的所有记录中的第100行至第200行。 select * from ( select rownum rnm, a.* from ( select OBJECT_NAME from DBA_OBJECTS where object_type='TABLE' ) a     where rownum <= 200 ) where rnm > 100 执行结果为: SQL> select * from   2  ( select rownum rnm, a.* from ( select OBJECT_NAME from DBA_OBJECTS where object_type='TABLE' ) a   3      [...]

接上篇的关于MySQL中的分页方法,本篇简单讨论在Sybase ASE中实现数据结果分页的方式。 本篇介绍三种方法。 第一种:利用游标 程序开发人员比较喜欢使用游标,因为游标的“循环”遍历方式类似编程语言中的for,while,loop语句的实现方法,写起来比较容易。使用游标一般步骤是:为指定的SQL语句定义一个游标,打开并移动游标,当移动到指定行号的记录行之后,再按照需要提取的行数来取数据。从表面上看解决了提取指 定范围数据的问题;但是在实际应用上,有可能会出现严重的性能问题。建立游标需要耗用一定的系统资源之外;当表内的数据量有上千万甚至到亿级别并且需要取大量的数据结果时,用游标每移动一 次就取这行数据,然后再移动游标,这个过程将是缓慢的。在使用游标的过程中,系统会给相应的表加上共享锁,导致锁竞争而严重影响数据库的性能。 在此不再介绍游标的实现方式,此法比较简单。一个使用游标分页的例子:sp_splitpage_by_cursor.sql 第二种:利用临时表和标志列 在Sybase ASE12.5.3及以后的版本中,我们可以用top关键字来限定只返回结果集的前N行数据。在ASE12.5.3之前的版本中只能用set rowcount N 的方法来“曲线救国”了。 对于取结果集的第N行至第N+M行数据的要求,我们考虑利用top来实现的话,比较容易想到的是:执行两次top,再加一次倒序排序。 步骤如下:           (1) select top N+M * from table_name where_clause order by ID ASC     –把此结果集派生为表:table_name1                   (2)   select top M * from table_name1 order by ID  DESC                          –把此结果集派生为表:table_name2                   (3)   select * from table_name2 order by ID  [...]

目前B/S架构的软件大行其道。通过浏览器如何向终端用户只展示指定页面内容而不是全部的?毕竟返回全部结果集,时间和空间开销都很大。 如此情况下,对SQL返回结果集进行分页是个很不错的解决方案。 本文主要介绍MySQL数据库中的分页实现方式。我以一个数据库管理员的角度进行说明,至于具体的实现还需要开发人员详细编写过程。 总的说来,在MySQL中实现分页功能是很简单的事情。MySQL数据库的开发人员替广大的使用者着想,提供了一个关键字limit来实现限定指定范围的功能。 下面简单介绍分页的思路。 在MySQL5.0.15-nt-max下进行测试。 1.新建一张临时表(MyISAM或者InnoDB类型的都可以),本测试表没有使用自增列。 CREATE TABLE `andkylee` (   `id` int(11) NOT NULL,   `name` varchar(30) default NULL,   `sex` char(1) NOT NULL,   `age` smallint(6) default NULL,   `note` varchar(100) default NULL ) ENGINE=MyISAM DEFAULT CHARSET=utf8;   2.插入测试数据。 在这里尤其介绍一种插入大量测试数据的方法。 先插入2条数据: insert into andkylee values(1,'hanyuliu','F',25,'aaaaaaaaaa'),(2,'andkylee','F',33,'bbbbbbbbbb');   批量插入数据: 在没有自增列的情况下,用下面的语句来实现插入“重复”数据。 insert into andkylee select [...]

应一个朋友的要求,贴上收藏的SQL常用分页的办法~~ 表中主键必须为标识列,[ID] int IDENTITY (1,1) 1.分页方案一:(利用Not In和SELECT TOP分页) 语句形式:  SELECT TOP 页记录数量 * FROM 表名 WHERE (ID NOT IN   (SELECT TOP (每页行数*(页数-1)) ID   FROM 表名   ORDER BY ID))   ORDER BY ID //自己还可以加上一些查询条件 例: select top 2 * from Sys_Material_Type where (MT_ID not in     (select top (2*(3-1)) MT_ID from Sys_Material_Type  [...]