db web pagination
http://user.qzone.qq.com/170475387/blog/86
web pagination
----------------------------------------------------------------------
---------------------------------------------------------------------- ---------------------------------------------------------------------- 1. 假分页 程序算法分页,数据库里取所有数据,显示有用的部分,写标准SQL语句,通过大量算法实现,对任何数据库都有效。 缺点:数据全部取出,性能下降 优点:程序可移植性高 对应任务:只是完成一个最简单的分页à 程序中没有涉及到查询代码 2. 真分页 任何数据库都会提供分页的函数操作:Oracle、DB2、MySQL 程序只取有用的部分,而其他没用的部分是不会被加载到内存中 缺点:特定数据库特有分页sql,可移植性差 优点 :程序的性能高 序言 分页技术在计算机上应用非常广泛,论硬件,计算机的系统内存中使用了分页技术,利用分页技术将线性地址转换为实际地址。论软件,为了实现虚拟内存, Windows利用了386以上CPU提供的内存分页技术,这些CPU支持把内存分成4KB为单位的一个个“页面”。而今,WEB中引入了数据库技术,大 量的数据处理需要用到分页技术。系统内存、虚拟内存、数据库三者之所以都要用到分页技术,是因为它们有一个共同的特征,即它们的地址或数据的排列都是线性的,需要通过分页技术来标识它们中的某一段或某个地址位置。我还没看过对于分页的定义,但可以知道,分页是用来标识某项事物的地址或位置。 在数据库中,大量的数据处理通过WEB来输出并传送到客户端,为了减少传输量和更精确地查找数据,很需要用到分页技术。目前分页技术已经广泛应用到互联网页的每个角落,包括搜索引擎、 BBS、网上黄页、电子商务及其它相关的拥有一定信息量的各项应用邻域。分页技术在目前已经成了WEB开发不可缺少的一部分。此文也仅限讨论WEB开发中 与数据库相关的分页技术。 (一) 数据库的大小 目 前的动态网站一般都需要数据库的支持,根据数据量(记录数)的多少,可以分为微型数据库(1万以内),小型数据库(10万以内),中型数据库(100万以 内),大型数据库(大于100万)不等。分页技术的一个重要作用就是为了提高服务器端的运行效率(其实也就是速度),如果在采用的分页技术没能达到提高效率的目的,是需要改善分页方式的时候了。 首先我们需要介绍一番分页的一些常用功能: 翻页功能 第一页: 查看所有符合条件的数据的第一页数据 上一页: 查看相对于当前数据库所在页的上一页数据 下一页: 查看相对于当前数据库所在页的下一页数据 最后一页: 查看所有符合条件的数据的最后一页数据 转到指定页: 查看所有符合条件的数据的指定页数据 统计功能及标定位置功能 统计总符合记录数、页数,标识当前查看的记录是第几条到第几条,在第几页。 几种常用的分页方式 1.包括上述的所有分页技术的功能,一般此类数据库的记录数都比较少 2.只有第一页,上一页,下一页,最后一页的翻页功能,其它的可能会有总符合记录数,页数的统计,此类数据库一般都比较大 3.仅有第一页和下一页,或仅有上一页和最后一页。这类数据库应该是趋向于大型,并尽量只用一句SQL语句查询来减少数据库的执行时间,可以加上总记录数及页数的统计。 4.仅返前面N条符合条件的记录,并可以使用所有的翻页功能,总符合记录数及页数只能作估计处理。一般来说,搜索引擎采用的都是这种方式。 上页的第二、三种分页方式不能采用标识当前查看的记录是第几条到第几条,在第几页的功能,似乎不符合原先所述的分页定义,其实,分页需要有一个位置标识才能完成分页,即在数据库中要有相应的可以跟踪的字段。只不过它们一次只能标识一个节点,达不到页面之间的任意转换查看。 功能直接影响着分页的速度, 当然,如果数据库越是大型,影响会越明显和严重。下面是各种数据库的建议拥有功能: 微型数据型: 由于数据量比较少,所受的速度影响也最小,为了网站访问方便,建议将所有功能都用上。 小型数据库: 建议采用第二种分页方式,这样网站会比较稳定,比如一些访问量很高的BBS,比如新浪的论坛。 中型数据库: 可以采用第二种或第三种方式,如果觉得用第二种方法速度嫌慢,建议采用第三种方式。 大型数据库: 如果需要遍历所有的数据,建议采用第三种方式,如果仅需返回前面的一部分数据,建议采用第四种。 (二) 分页的执行效率如何才能称得上高效率? 我们将一次性完成所有的分页功能叫完成一次分页,无论怎么多的数据,完成一次分页的执行时间不应该超过100毫秒,即0.1秒。如果总是大于200秒毫,我想你应该换种分页方式了,并减少一些分页中的功能。时间就是生命,在程序中亦是如此。 一 般数据库的WEB分页通过一些脚本语句(包括CGI)来实现,比如ASP,PHP和JSP等等,数据库的执行效率直接影响着系统的稳定性和访问承受能力。 20%的代码占用了80%的执行时间已经是编程中的经典词句,在分页的实际应用中我们还应该不断地测试所运行的各种代码,找出程序中消耗时间瓶颈,将会使你写出来的程序更加的稳定和专业。
|