FireBird中的分页查询

本文介绍了Firebird数据库中实现分页查询的方法。Firebird支持两种分页查询语法:First n Skip m和Rows m to n。前者忽略m行后取n行,后者从第m行开始取到第n行。这两种语法提供了灵活的分页解决方案。
今天要在Firebird中使用分页查询功能,就开始犯愁<wbr></wbr>,这个东西没有Oracle的rownum,也没有SQL Server的Top n,会是通过什么方式分页的呢?非常让人无奈的是Firebird<wbr></wbr>的网站上找不到新版的查询语言文档。而我手头的Interbase 6.0 Language Refrence中对分页查询只字未提。在我心里<wbr></wbr>,准备好了两个方案:
1、用Generator生成一个rownum,显然<wbr></wbr>,在并发的情况下,这个办法会有很多麻烦。
2、用客户端游标忽略掉无关的行。.net 1.x的DataGrid分页就是这种方式,性能非常糟糕。
Google的结果让我瞠目结舌,原来,Firebird直接支持<wbr></wbr>分页查询,但是因为没有新文档,所以我一直不知道而已<wbr></wbr>。作为FB重要的查询语言功能,我居然是在Hibernate的站<wbr></wbr>点上查到……原文如下:

Also Firebird supports SELECT FIRST n SKIP m <column list> FROM ...

statements. Firebird 2.0 will support ROWS clause (SELECT * FROM .. WHERE

... ORDER BY ... ROWS 10 TO 20) as an alternative to FIRST/SKIP syntax.

试验了一下,First n skip m形式会在忽略掉m行后,取前n行;而rows m to n形式,则是从第m行取到第n行。从语法的形式讲<wbr></wbr>,我个人更喜欢FB2.0的形式,分页的信息从select中独立<wbr></wbr>出来,更容易在应用层拼接生成。而在功能上,两者可以互相代替的<wbr></wbr>:)。
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
红包 添加红包
表情包 插入表情
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值