分页数据、滚动游标和定位更新

在 Web 应用程序中,一种常见的范例是对查询结果进行 分页。如果您使用一个 Internet 搜索引擎,那么很可能每天都会做这样的事。您输入 搜索词,然后得到前 10-20 个匹配项。如果您想看到更多搜索结果,可以单击 "next page" 链接。如果想回头看前面看过的结果,可以单击 "previous page" 链接。记得在几年前,当我第一次在 Web 上使用这样的东西时,我对自己说:“为什么我不能通过滚动查看所有数据呢?” 问题的答案说简单也简单,说复杂也复杂 —— 我只想说,HTTP 不会智能地使数据库上的可滚动 游标一直处于开放状态,即便如此,需要大量传输的 Web 应用程序也会很快地消耗掉大量开放的可滚动游标。因此,最简单的解决方案是为用户显示所有的匹配项 —— 但是用户很容易迷失在大量的结果当中。比较符合逻辑的措施是人工地将数据格式化到多个页面上,使用户可以每次查看一部分可以管理的数据。
  所以人们编写可以取所有数据的 PHP 应用程序,然后只显示前 10 行。根据下一次请求,应用程序又显示 11-20 行,依此类推。这对于只返回少量数据的查询来说很不错,但是,如果有很多匹配项(比如多于 100),那么先取全部数据然后丢弃其中的 90%,这种做法很浪费。PHP 的创始人 Rasmus Lerdorf 就这种情形特地为 MySQL 发明了一个特殊的 "LIMIT, OFFSET" 子句。它允许您通知数据库,您只对一小部分行感兴趣,这样它就不会取其他不需要的行了。其语法(或非常类似的东西)已经被其他流行的开放源代码数据库采纳,但并不是所有数据库都提供了相同的语法。 Troels Arvin 收集了一些非常有用的信息,对不同 RDBMS 所支持的语法进行了比较。
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值