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 Document 代码注释规范
Apr 13 PHP
连接到txt文本的超链接,不直接打开而是点击后下载的处理方法
Jul 01 PHP
PHP垃圾回收机制简单说明
Jul 22 PHP
PHP递归返回值时出现的问题解决办法
Feb 19 PHP
php实现把数组按指定的个数分隔
Feb 17 PHP
深入理解PHP中的global
Aug 19 PHP
PHP中使用localhost连接Mysql不成功的解决方法
Aug 20 PHP
变量在 PHP7 内部的实现(一)
Dec 21 PHP
ThinkPHP中create()方法自动验证实例
Apr 26 PHP
PHP实现动态创建XML文档的方法
Mar 30 PHP
PHP 多进程与信号中断实现多任务常驻内存管理实例方法
Oct 04 PHP
对laravel的csrf 防御机制详解,及form中csrf_token()的存在介绍
Oct 24 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&&mysql)一
2006/10/09 PHP
在Ubuntu 14.04上部署 PHP 环境及 WordPress
2014/09/02 PHP
PHP+JS实现大规模数据提交的方法
2015/07/02 PHP
php与python实现的线程池多线程爬虫功能示例
2016/10/12 PHP
PHP实现使用DOM将XML数据存入数组的方法示例
2017/09/27 PHP
详解php命令注入攻击
2019/04/06 PHP
PHP设计模式入门之状态模式原理与实现方法分析
2020/04/26 PHP
在一个浏览器里呈现所有浏览器测试结果的前端测试工具的思路
2010/03/02 Javascript
关于jQuery的inArray 方法介绍
2011/10/08 Javascript
jQuery链式操作如何实现以及为什么要用链式操作
2013/01/17 Javascript
jQuery 获取和设置select下拉框的值实现代码
2013/11/08 Javascript
form表单action提交的js部分与html部分
2014/01/07 Javascript
jQuery 删除或是清空某个HTML元素示例
2014/08/04 Javascript
微信浏览器内置JavaScript对象WeixinJSBridge使用实例
2015/05/25 Javascript
js实现的早期滑动门菜单效果代码
2015/08/27 Javascript
阿里巴巴技术文章分享 Javascript继承机制的实现
2016/01/14 Javascript
angularjs ui-router中路由的二级嵌套
2017/03/10 Javascript
Vue2.0中三种常用传值方式(父传子、子传父、非父子组件传值)
2018/08/16 Javascript
js类的继承定义与用法分析
2019/06/21 Javascript
基于 vue-skeleton-webpack-plugin 的骨架屏实战
2019/08/05 Javascript
微信小程序中的列表切换功能实例代码详解
2020/06/09 Javascript
Python编程使用tkinter模块实现计算器软件完整代码示例
2017/11/29 Python
TensorFlow神经网络优化策略学习
2018/03/09 Python
python实现将读入的多维list转为一维list的方法
2018/06/28 Python
使用HTML5原生对话框元素并轻松创建模态框组件
2019/03/06 HTML / CSS
捷克体育用品购物网站:D-sport
2017/12/28 全球购物
说说你所熟悉或听说过的j2ee中的几种常用模式?及对设计模式的一些看法
2012/05/24 面试题
药学专业大学生个人的自我评价
2013/11/04 职场文书
集团公司总经理岗位职责
2013/12/20 职场文书
人力资源部副职的竞聘演讲稿
2014/01/07 职场文书
企业年度评优方案
2014/06/02 职场文书
入党积极分子批评与自我批评思想汇报
2014/09/14 职场文书
团队会宣传标语
2014/10/09 职场文书
Mysql MVCC机制原理详解
2021/04/20 MySQL
yolov5返回坐标的方法实例
2022/03/17 Python
Nginx如何配置根据路径转发详解
2022/07/23 Servers