`

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%的执行时间已经是编程中的经典词句,在分页的实际应用中我们还应该不断地测试所运行的各种代码,找出程序中消耗时间瓶颈,将会使你写出来的程序更加的稳定和专业。

SELECT TOP 页大小 * FROM Users WHERE
            (ID NOT IN (SELECT TOP (页大小*(页数-1)) ID FROM Users ORDER BY ID DESC))
                    ORDER BY ID DESC
注:页大小指的是每页显示的条数,粗体部分是需要用程序运算后的一个数字。页数:表示第几页,从1开始
a 别名
user_id 主键
user_code 建立索引
建立索引排序,则减小sql时间消耗成本

查询分页:
select top 3 * from "user" a where a.user_id not in
       (select top 6 uer_id from "user" order by user_code)
         order by user_code
查询总数:
select count user_id from user


end

分享到:
评论

相关推荐

    orientdb手册

    介绍如何构建基于 Web 的应用来访问 OrientDB 数据库。 **10.15 服务器管理 (Server Management)** 提供服务器配置和监控的指南。 **10.16 JDBC 驱动 (JDBC Driver)** 介绍如何使用 JDBC 驱动程序连接到 Orient...

    Laravel开发-pagination (1).zip

    - 对于查询构造器,需要先调用`toBase()`方法,再调用分页方法,如`$users = DB::table('users')->toBase()->paginate(15);`。 6. **自定义分页数据** - 可以通过`withPath()`方法设置分页链接的基础路径,如`$...

    php-pagination:一个简单的 PHP OOP 分页脚本

    在Web开发中,当数据量较大时,一次性加载所有记录会导致页面加载速度变慢,用户体验下降。此时,分页技术就显得尤为重要。`php-pagination`是一个基于PHP面向对象编程(OOP)实现的简单分页脚本,它可以帮助开发者...

    Python利用flask sqlalchemy实现分页效果

    在Web开发中,当数据量较大时,为了提高用户体验以及减轻服务器负担,通常会采用分页技术展示数据。Flask-SQLAlchemy是一个非常流行的扩展,它为Flask框架提供了SQLAlchemy的支持,使得开发者能够更加方便地操作...

    ASP.NET MVC Linq to SQL 实现数据库增删改(源代码)ASP.NET MVC Linq to SQL 实现数据库增删改(源代码) ASP.NET MVC 分页控件

    <div class="pagination"> @Html.PagedListPager(Model, page => Url.Action("Index", new { page })) ``` 以上代码展示了如何在ASP.NET MVC项目中使用Linq to SQL处理数据库操作,以及如何实现简单的分页功能。...

    php zendframework 常用代码

    分页是在Web开发中常见的需求之一,Zend Framework提供了强大的分页功能。 **代码示例:** ```php // 分页参数 $numberPage = 10; // 每页显示的数量 $getPage = $this->_request->getParam('page'); // 获取当前...

    Laravel开发-queryline .zip

    除了基本的查询,Laravel查询构建器还支持联接(joins)、分组(groups)、排序(orders)、分页(pagination)等高级功能。例如,如果你需要根据某个字段进行分组并计算每个组的平均值,可以这样做: ```php $...

    python flask实现分页效果

    在 Web 开发中,分页是非常常见的功能之一,尤其是在数据量较大的情况下,为了提高用户体验以及减轻服务器负担,合理地进行数据分页显得尤为重要。本文将详细介绍如何使用 Python 的 Flask 框架来实现分页效果。 ##...

    在MVC3.0框架下的分页控件

    MVC(Model-View-Controller)模式为构建可维护、可扩展的Web应用程序提供了强大的支持,而Razor视图引擎则提供了一种简洁的语法来编写视图代码。本文将深入探讨如何在MVC3.0中实现分页控件,以及可能遇到的样式修改...

    .NET移动通信程序设计.rar

    9.1.2 OleDB 程序... 122 9.1.3 DataSet 程序.. 124 9.2 Email........ 126 9.3 图像......... 127 9.4 XML ........ 133 9.5 XML Web Service ..... 141 第 10 章安全性. 149 附录 155 附录 1 Microsoft ...

    MVC5列表—排序、过滤、分页

    <ul class="pagination"> @Html.PagedListPager(Model, page => Url.Action("Index", new { page, pageSize = Model.PageSize }), PagedListRenderOptions.ClassicPlusFirstLast) ``` 总结来说,MVC5中的排序、...

    Python-一个基于flask的文章系统

    使用SQLAlchemy的`db.create_all()`方法创建数据库表,`db.session`进行数据操作。当数据库结构发生变化时,可使用Alembic进行数据库迁移。 5. 用户认证与权限管理 可以使用Flask-Login实现用户认证,Flask-...

    Laravel开发-mongodb MongoDB 数据库驱动

    Jenssegers/Laravel-MongoDB还提供了关联(Relationships)、软删除(Soft Deleting)、分页(Pagination)等特性,使你可以充分利用MongoDB的优势,同时保持Laravel的开发体验。 在实际项目中,可能还需要根据需求...

    php分页原理

    在Web开发中,数据量大的时候,一次性加载所有记录会导致页面加载速度慢,用户体验下降。此时,分页技术显得尤为重要。本文将深入探讨PHP分页的原理,帮助开发者掌握这一核心技能。 ### 一、分页的概念 分页是一种...

    ThinkPHP分页的二次封装

    在Web开发中,分页是必不可少的功能,尤其是在处理大量数据时。ThinkPHP是一个流行的PHP框架,它提供了内置的分页类来帮助开发者实现这一功能。本文将深入探讨如何在ThinkPHP中进行分页的二次封装,以及如何结合...

    json实现jsp分页实例介绍(附效果图).docx

    <ul class="pagination"> <li class="page-item"><a class="page-link" href="#" data-page="1">1</a></li> <li class="page-item"><a class="page-link" href="#" data-page="2">2</a></li> ...

    Yii 框架使用数据库(databases)的方法示例

    这种方式更接近于传统数据库访问,使用`yii\db\Command`类和`yii\db\CommandBuilder`类来创建和执行SQL语句。 4. 创建控制器和动作 在Yii框架中,控制器是处理用户请求并返回响应的组件。一个控制器通常负责处理...

    datagrid+yii2分页查询

    'pagination' => [ 'pageSize' => 20, ], ]); echo GridView::widget([ 'dataProvider' => $dataProvider, 'columns' => [ ['class' => 'yii\grid\SerialColumn'], 'username', 'email', ['class' => 'yii...

    php新闻内容分页

    $links = "<div class='pagination'>"; if ($currentPage > 1) { $links .= "($currentPage - 1)."'>上一页</a>"; } if ($currentPage != 1) { $links .= "首页</a>"; } for ($i = 1; $i $totalPages; $i++)...

    Laravel开发-laravel-paginator

    在Laravel框架中,`Laravel-paginator`...理解其工作原理和用法,将有助于你构建更高效、用户友好的Web应用。在实际项目中,灵活运用`Laravel-paginator`,结合适当的前端组件,可以轻松实现美观且功能齐全的分页效果。

Global site tag (gtag.js) - Google Analytics