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 empty() 检查一个变量是否为空
Nov 10 PHP
php中使用__autoload()自动加载未定义类的实现代码
Feb 06 PHP
基于PHP Web开发MVC框架的Smarty使用说明
Apr 19 PHP
解析PHP可变函数的经典用法
Jun 20 PHP
Codeigniter框架实现获取分页数据和总条数的方法
Dec 05 PHP
用php守护另一个php进程的例子
Feb 13 PHP
PHP中基本HTTP认证技巧分析
Mar 16 PHP
在WordPress中实现评论头像的自定义默认和延迟加载
Nov 24 PHP
Ubuntu VPS中wordpress网站打开时提示”建立数据库连接错误”的解决办法
Nov 03 PHP
php 魔术常量详解及实例代码
Dec 04 PHP
PHP基于自增数据如何生成不重复的随机数示例
May 19 PHP
laravel 5.5 关闭token的3种实现方式
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文件操作实现代码分享
2011/09/01 PHP
php中自定义函数dump查看数组信息类似var_dump
2014/01/27 PHP
ThinkPHP访问不存在的模块跳转到404页面的方法
2014/06/19 PHP
php 魔术常量详解及实例代码
2016/12/04 PHP
详细讲解JS节点知识
2010/01/31 Javascript
jQuery操作checkbox选择(list/table)
2013/04/07 Javascript
jquery mobile changepage的三种传参方法介绍
2013/09/13 Javascript
JS实现清除指定cookies的方法
2014/09/20 Javascript
javascript精确统计网站访问量实例代码
2015/12/19 Javascript
js获取所有checkbox的值的简单实例
2016/05/30 Javascript
AngularJS 遇到的小坑与技巧小结
2016/06/07 Javascript
jQuery 选择器(61种)整理总结
2016/09/26 Javascript
JavaScript实现垂直滚动条效果
2017/01/18 Javascript
详解Angular之constructor和ngOnInit差异及适用场景
2017/06/22 Javascript
Angularjs上传图片实例详解
2017/08/06 Javascript
如何理解Vue的render函数的具体用法
2017/08/30 Javascript
JS实现的文字间歇循环滚动效果完整示例
2018/02/13 Javascript
基于vue2的canvas时钟倒计时组件步骤解析
2018/11/05 Javascript
深入浅析vue-cli@3.0 使用及配置说明
2019/05/08 Javascript
如何通过javaScript去除字符串两端的空白字符
2020/02/06 Javascript
[01:16:16]DOTA2-DPC中国联赛定级赛 RNG vs Phoenix BO3第二场 1月8日
2021/03/11 DOTA
python改变日志(logging)存放位置的示例
2014/03/27 Python
Python中使用item()方法遍历字典的例子
2014/08/26 Python
介绍Python中几个常用的类方法
2015/04/08 Python
python中利用await关键字如何等待Future对象完成详解
2017/09/07 Python
Windows下python3.6.4安装教程
2018/07/31 Python
Python3模拟登录操作实例分析
2019/03/12 Python
Python 通过正则表达式快速获取电影的下载地址
2020/08/17 Python
Petmate品牌官方网站:宠物用品
2018/11/25 全球购物
应届毕业生求职自荐书
2014/01/03 职场文书
《威尼斯的小艇》教学反思
2014/02/17 职场文书
平安工地建设方案
2014/05/06 职场文书
煤矿安全知识竞赛活动总结
2014/07/07 职场文书
优秀教师推荐材料
2014/12/16 职场文书
python实现的人脸识别打卡系统
2021/05/08 Python
pandas时间序列之pd.to_datetime()的实现
2022/06/16 Python