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 和 MySQL 基础教程(一)
Oct 09 PHP
php性能优化分析工具XDebug 大型网站调试工具
May 22 PHP
mac环境中使用brew安装php5.5.15
Aug 18 PHP
php结合安卓客户端实现查询交互实例
May 05 PHP
基于PHP如何把汉字转化为拼音
Dec 11 PHP
Yii操作数据库实现动态获取表名的方法
Mar 29 PHP
PHP实现的DES加密解密实例代码
Apr 06 PHP
PHP针对字符串开头和结尾的判断方法
Jul 11 PHP
解析PHP之提取多维数组指定列的方法
Jan 03 PHP
PHP微信公众号开发之微信红包实现方法分析
Jul 14 PHP
PHP的介绍以及优势详细分析
Sep 05 PHP
在laravel中使用with实现动态添加where条件
Oct 10 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获取网站域名和地址的代码
2008/08/17 PHP
浅析Yii2中GridView常见操作
2016/04/22 PHP
php设计模式之职责链模式实例分析【星际争霸游戏案例】
2020/03/27 PHP
js自动闭合html标签(自动补全html标记)
2012/10/04 Javascript
js+JQuery返回顶部功能如何实现
2012/12/03 Javascript
jQuery 遍历-nextUntil()方法以及prevUntil()方法的使用介绍
2013/04/26 Javascript
Jquery中val()表单取值赋值的实例代码
2013/08/15 Javascript
jQuery 取值、赋值的基本方法整理
2014/03/31 Javascript
浅谈javascript构造函数与实例化对象
2015/06/22 Javascript
纯js代码实现简单计算器
2015/12/02 Javascript
jQuery控制控件文本的长度的操作方法
2016/12/05 Javascript
JavaScript中动态向表格添加数据
2017/01/24 Javascript
jQuery实现可兼容IE6的遮罩功能详解
2017/09/19 jQuery
基于angular-utils-ui-breadcrumbs使用心得(分享)
2017/11/03 Javascript
解析vue、angular深度作用选择器
2019/09/11 Javascript
JQuery样式与属性设置方法分析
2019/12/07 jQuery
javascript实现拖拽碰撞检测
2020/03/12 Javascript
微信小程序实现上传照片代码实例解析
2020/08/04 Javascript
关于IDEA中的.VUE文件报错 Export declarations are not supported by current JavaScript version
2020/10/17 Javascript
JavaScript canvas实现文字时钟
2021/01/10 Javascript
[04:20]DOTA2-DPC中国联赛 正赛 VG vs LBZS 选手采访 1月19日
2021/03/11 DOTA
Python判断变量是否已经定义的方法
2014/08/18 Python
Python递归实现汉诺塔算法示例
2018/03/19 Python
Python爬虫实战:分析《战狼2》豆瓣影评
2018/03/26 Python
详解python读取image
2019/04/03 Python
详解Python二维数组与三维数组切片的方法
2019/07/18 Python
Tensorflow分批量读取数据教程
2020/02/07 Python
新西兰演唱会和体育门票网站:Ticketmaster新西兰
2017/10/07 全球购物
微软中国官方商城:Microsoft Store中国
2018/10/12 全球购物
经典导游欢迎词大全
2014/01/16 职场文书
一夜的工作教学反思
2014/02/08 职场文书
集体婚礼策划方案
2014/02/22 职场文书
卖车协议书
2014/04/21 职场文书
领导欢迎词范文
2015/01/26 职场文书
祝酒词范文
2015/08/12 职场文书
MySQL中EXPLAIN语句及用法
2022/05/20 MySQL