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 相关文章推荐
Search File Contents PHP 搜索目录文本内容的代码
Feb 21 PHP
php中随机显示图片的函数代码
Jun 23 PHP
一个图片地址分解程序(用于PHP小偷程序)
Aug 23 PHP
基于GD2图形库的PHP生成图片缩略图类代码分享
Feb 08 PHP
javascript+php实现根据用户时区显示当地时间的方法
Mar 11 PHP
php实现encode64编码类实例
Mar 24 PHP
php源码分析之DZX1.5字符串截断函数cutstr用法
Jun 17 PHP
php基于curl主动推送最新内容给百度收录的方法
Oct 14 PHP
详解PHP5.6.30与Apache2.4.x配置
Jun 02 PHP
详解php curl带有csrf-token验证模拟提交方法
Apr 18 PHP
Yii框架核心组件类实例详解
Aug 06 PHP
php策略模式简单示例分析【区别于工厂模式】
Sep 25 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
IIS6的PHP最佳配置方法
2007/03/19 PHP
php 获取今日、昨日、上周、本月的起始时间戳和结束时间戳的方法
2013/09/28 PHP
PHP命名空间(namespace)的动态访问及使用技巧
2014/08/18 PHP
PHP中把数据库查询结果输出为json格式简单实例
2015/04/09 PHP
Zend Framework入门之环境配置及第一个Hello World示例(附demo源码下载)
2016/03/21 PHP
PHP设计模式之简单工厂和工厂模式实例分析
2019/03/25 PHP
调用js时ie6和ie7,ff的区别
2009/08/19 Javascript
Extjs学习笔记之四 工具栏和菜单
2010/01/07 Javascript
使用nodejs、Python写的一个简易HTTP静态文件服务器
2014/07/18 NodeJs
JavaScript设计模式经典之工厂模式
2016/02/24 Javascript
jQuery插件Flexslider实现图片轮播、图文结合滑动切换效果
2020/04/16 Javascript
Javascript动画效果(3)
2016/10/11 Javascript
判断横屏竖屏(三种)
2017/02/13 Javascript
使用gulp搭建本地服务器并实现模拟ajax
2017/04/05 Javascript
将input框中输入内容显示在相应的div中【三种方法可选】
2017/05/08 Javascript
mpvue微信小程序多列选择器用法之省份城市选择的实现
2019/03/07 Javascript
vue-cli 3.x配置跨域代理的实现方法
2019/04/12 Javascript
微信JS-SDK实现微信会员卡功能(给用户微信卡包里发送会员卡)
2019/07/25 Javascript
关于小程序优化的一些建议(小结)
2020/12/10 Javascript
python实现朴素贝叶斯算法
2018/11/19 Python
django与小程序实现登录验证功能的示例代码
2019/02/19 Python
python字符串替换第一个字符串的方法
2019/06/26 Python
python sklearn常用分类算法模型的调用
2019/10/16 Python
Django 自定义404 500等错误页面的实现
2020/03/08 Python
Deichmann英国:德国鞋类零售商
2021/01/30 全球购物
教师的实习自我鉴定
2013/12/17 职场文书
生产厂长岗位职责
2014/02/21 职场文书
元旦晚会主持词
2014/03/24 职场文书
安全生产管理责任书
2014/04/16 职场文书
政府班子四风问题整改措施
2014/10/04 职场文书
研究生导师推荐信
2015/03/25 职场文书
2016重阳节红领巾广播稿
2015/12/18 职场文书
Python爬取科目四考试题库的方法实现
2021/03/30 Python
Python中Permission denied的解决方案
2021/04/02 Python
pytorch 6 batch_train 批训练操作
2021/05/28 Python
详解OpenCV获取高动态范围(HDR)成像
2022/04/29 Python