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者的疑难问答(2)
Oct 09 PHP
PHP Squid中可缓存的动态网页设计
Sep 17 PHP
php xml-rpc远程调用
Dec 19 PHP
PHP COOKIE设置为浏览器进程
Jun 21 PHP
PHP Session变量不能传送到下一页的解决方法
Nov 27 PHP
php不写闭合标签的好处
Mar 04 PHP
新浪SAE云平台下使用codeigniter的数据库配置
Jun 12 PHP
PHP随机生成信用卡卡号的方法
Mar 23 PHP
yii2使用gridView实现下拉列表筛选数据
Apr 10 PHP
PHP微信开发之微信录音临时转永久存储
Jan 26 PHP
php5与php7的区别点总结
Oct 11 PHP
Laravel5.5+ 使用API Resources快速输出自定义JSON方法详解
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.MVC的模板标签系统(二)
2006/09/05 PHP
php自动识别文件编码并转换为UTF-8的方法
2014/06/12 PHP
php验证码的制作思路和实现方法
2015/11/12 PHP
ThinkPHP自定义Redis处理SESSION的实现方法
2016/05/16 PHP
PHPStorm2020.1永久激活及下载更新至2020(推荐)
2020/09/25 PHP
简单通用的JS滑动门代码
2008/12/19 Javascript
Extjs学习笔记之五 一个小细节renderTo和applyTo的区别
2010/01/07 Javascript
javascript权威指南 学习笔记之null和undefined
2011/09/25 Javascript
使用JavaScript开发IE浏览器本地插件实例
2015/02/18 Javascript
分享Javascript实用方法二
2015/12/13 Javascript
JS使用正则表达式过滤多个词语并替换为相同长度星号的方法
2016/08/03 Javascript
JavaScript计算值然后把值嵌入到html中的实现方法
2016/10/29 Javascript
浅谈Javascript中的Label语句
2016/12/14 Javascript
JavaScript利用闭包实现模块化
2017/01/13 Javascript
通过命令行生成vue项目框架的方法
2017/07/12 Javascript
js实现多张图片延迟加载效果
2017/07/17 Javascript
layer.close()关闭进度条和Iframe窗的方法
2018/08/17 Javascript
微信小程序自定义导航栏
2018/12/31 Javascript
详解如何更好的使用module vuex
2019/03/27 Javascript
javascript 函数的暂停和恢复实例详解
2020/04/25 Javascript
vue中父子组件传值,解决钩子函数mounted只运行一次的操作
2020/07/27 Javascript
[20:57]Ti4主赛事第三天开幕式
2014/07/21 DOTA
[00:09]DOTA2新版本PA至宝特效动作展示
2014/11/19 DOTA
python中常用的各种数据库操作模块和连接实例
2014/05/29 Python
Python构建图像分类识别器的方法
2019/01/12 Python
django 邮件发送模块smtp使用详解
2019/07/22 Python
python动态视频下载器的实现方法
2019/09/16 Python
Timberland法国官网:购买靴子、鞋子、衣服、夹克和配饰
2019/11/30 全球购物
Belstaff英国官方在线商店:Belstaff.co.uk
2021/02/09 全球购物
竞选演讲稿范文
2013/12/28 职场文书
2014自主招生自荐信策略
2014/01/27 职场文书
商务日语专业毕业生自荐信
2014/03/27 职场文书
房地产资料员岗位职责
2014/07/02 职场文书
小学生我的梦想演讲稿
2014/08/21 职场文书
支行行长岗位职责
2015/02/15 职场文书
python神经网络Xception模型
2022/05/06 Python