PHP分页效率终结版(推荐)


Posted in PHP onJuly 01, 2013

这里仅展示出设计思路,具体安全问题,是否同步更新等可根据具体需求添加修改:
以前人们常用的PHP分页技术,通常都需要先统计出数据库中总信息条数才能判断出总页数并对其进行分页,,也就是说,每次分页要对数据库进行两次调用,在面临大数据量,高并发查询情况下是很不效率的,曾经一直为这个问题烦恼但都没想到合适的解决方法,今天突然在睡梦中 遇见奇迹...具体分析原理如下:(红色部分为优化后的区别,思路采用最原始的代码书写,为了照顾新人)
原始分页技术:包括许多开源程序也在使用的技术;
一般都是对数据库信息进行统计,然后调用分页类,进行分页,,每次都要经过2次数据库查询操作
例(原始分页技术):  每次都要进行2次数据库查询

    $sqlstr="select  count(*)  as total  from  tablename";
    $sql=mysql_query($sql) or die("error");
 $info=mysql_fetch_array($sql);  //第一次 数据库调用
    $total=$info["total"];//每次翻页都要进行 总信息条数 的数据库查询操作
    $pagesize=10; //每页显示数量
    $page=$_GET["page"]?max(intval($_GET["page"]),1):1;//当前页
    if($total){,
    $sql="select * from  tablename  limit "($page-1)*$pagesize",$pagesize";
    
$sql=mysql_query($sql) or die("error");//第二次数据库查询操作
    
$info=mysql_fetch_array($sql);

 do{


...............
            }while($info=mysql_fetch_array($sql));
            include("page_class.php");//调用分页类
            $url="url.php?page=" //假设当前页为 URL.PHP
            echo $get_page=new get_page($url,$total,$pagesize,$page); //URL 为要分页的URL地址
   }
   //优化后的分页技术(只需在第一次调用时进行信息统计即可)
    if(isset($_GET["total"])){   //只需要进行一次总信息条数的统计即可

 $total=intval($_GET["total"]);
 //以后的的总信息数量通过GET传递即可,节省了1/2的数据库负荷,,,,
    }else{
    
$sqlstr="select  count(*)  as total  from  tablename";
    
$sql=mysql_query($sql) or die("error");

 $info=mysql_fetch_array($sql);  //第一次 数据库调用
            $total=$info["total"];
    }//总信息条数
    $pagesize=10; //每页显示数量
    $page=$_GET["page"]?max(intval($_GET["page"]),1):1;//当前页
    if($total){
    
$sql="select * from  tablename  limit "($page-1)*$pagesize",$pagesize";
    
$sql=mysql_query($sql) or die("error");//第二次数据库查询操作
    
$info=mysql_fetch_array($sql);

 do{


...............
            }while($info=mysql_fetch_array($sql));
            include("page_class.php");//调用分页类

 $url="url.php?total=$total&page=" //假设当前页为 URL.PHP
            echo $get_page=new get_page($url,$total,$pagesize,$page); //URL 为要分页的URL地址
   }
PHP 相关文章推荐
PHP的FTP学习(二)[转自奥索]
Oct 09 PHP
php select,radio和checkbox默认选择的实现方法
May 15 PHP
php下封装较好的数字分页方法
Nov 23 PHP
php生成图形(Libchart)实例
Nov 06 PHP
PHP设置进度条的方法
Jul 08 PHP
Zend Framework开发入门经典教程
Mar 23 PHP
微信支付开发交易通知实例
Jul 12 PHP
php使用高斯算法实现图片的模糊处理功能示例
Nov 11 PHP
PHP Header失效的原因分析及解决方法
Nov 16 PHP
PHP magento后台无法登录问题解决方法
Nov 24 PHP
PHP+Ajax实现的无刷新分页功能详解【附demo源码下载】
Jul 03 PHP
Laravel实现批量更新多条数据
Apr 06 PHP
解析php防止form重复提交的方法
Jul 01 #PHP
PHP以指定字段为索引返回数据库所取的数据数组
Jun 30 #PHP
php设计模式之单例、多例设计模式的应用分析
Jun 30 #PHP
php获取$_POST同名参数数组的实现介绍
Jun 30 #PHP
深入解析php中的foreach问题
Jun 30 #PHP
浅析Apache中RewriteCond规则参数的详细介绍
Jun 30 #PHP
浅析关于PHP位运算的简单权限设计
Jun 30 #PHP
You might like
PHP学习笔记之数组篇
2011/06/28 PHP
php静态文件生成类实例分析
2015/01/03 PHP
PHP程序中使用adodb连接不同数据库的代码实例
2015/12/19 PHP
Zend Framework入门教程之Zend_View组件用法示例
2016/12/09 PHP
PHP与Perl之间知识点区别整理
2019/03/19 PHP
jQuery 页面载入进度条实现代码
2009/02/08 Javascript
Js控制弹窗实现在任意分辨率下居中显示
2013/08/01 Javascript
ANGULARJS中使用JQUERY分页控件
2015/09/16 Javascript
很棒的js Tab选项卡切换效果
2016/08/30 Javascript
遍历json 对象的属性并且动态添加属性的实现
2016/12/02 Javascript
JavaScript中捕获/阻止捕获、冒泡/阻止冒泡方法
2016/12/07 Javascript
浅谈javascript中的 “ && ” 和 “ || ”
2017/02/02 Javascript
js实现简单的手风琴效果
2017/02/27 Javascript
原生JS实现手动轮播图效果实例代码
2018/11/22 Javascript
ES6入门教程之变量的解构赋值详解
2019/04/13 Javascript
ES6 Map结构的应用实例分析
2019/06/26 Javascript
Vue 实现分页与输入框关键字筛选功能
2020/01/02 Javascript
Vue快速实现通用表单验证的方法
2020/02/24 Javascript
js正则表达式简单校验方法
2021/01/03 Javascript
python破解zip加密文件的方法
2018/05/31 Python
python事件驱动event实现详解
2018/11/21 Python
python使用PIL模块获取图片像素点的方法
2019/01/08 Python
给我一面国旗 python帮你实现
2019/09/30 Python
Python smtp邮件发送模块用法教程
2020/06/15 Python
C#如何进行LDAP用户校验
2012/11/21 面试题
大学生物业管理求职信
2013/10/24 职场文书
心理健康活动总结
2014/04/30 职场文书
国旗下演讲稿
2014/05/08 职场文书
幼儿园老师个人总结
2015/02/28 职场文书
后勤个人工作总结
2015/02/28 职场文书
初中生思想道德自我评价
2015/03/09 职场文书
买卖合同纠纷代理词
2015/05/25 职场文书
公司年会开场白
2015/06/01 职场文书
工资证明格式模板
2015/06/12 职场文书
创业计划书之花店
2019/09/20 职场文书
python通配符之glob模块的使用详解
2021/04/24 Python