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者的疑难问答(1)
Oct 09 PHP
php db类库进行数据库操作
Mar 19 PHP
php与php MySQL 之间的关系
Jul 17 PHP
PHP 存储文本换行实现方法
Jan 05 PHP
PHP数组 为文章加关键字连接 文章内容自动加链接
Dec 29 PHP
php中用于检测一个地理IP地址是否可用的代码
Feb 19 PHP
PHP实现Soap通讯的方法
Nov 03 PHP
PHP SPL标准库之接口(Interface)详解
May 11 PHP
PHP使用preg_split和explode分割textarea存放内容的方法分析
Jul 03 PHP
浅谈关于PHP解决图片无损压缩的问题
Sep 01 PHP
PHP实现笛卡尔积算法的实例讲解
Dec 22 PHP
PHP接入支付宝接口失效流程详解
Nov 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迭代与递归实现无限级分类
2017/08/28 PHP
Javascript客户端脚本的设计和应用
2006/08/21 Javascript
收集的一些Array及String原型对象的扩展实现代码
2010/12/05 Javascript
Js控制弹窗实现在任意分辨率下居中显示
2013/08/01 Javascript
JavaScript异步加载浅析
2014/12/28 Javascript
js实现浏览器窗口大小被改变时触发事件的方法
2015/02/02 Javascript
jquery实现的淡入淡出下拉菜单效果
2015/08/25 Javascript
Spring MVC中Ajax实现二级联动的简单实例
2016/07/06 Javascript
轻松实现js选项卡切换效果
2016/09/24 Javascript
jqgrid实现简单的单行编辑功能
2017/09/30 Javascript
vue Element-ui input 远程搜索与修改建议显示模版的示例代码
2017/10/19 Javascript
AngularJS中controller控制器继承的使用方法
2017/11/03 Javascript
微信小程序中换行空格(多个空格)写法详解
2018/07/10 Javascript
vue-cli安装使用流程步骤详解
2018/11/08 Javascript
jQuery操作cookie的示例代码
2019/06/05 jQuery
JS实现的字符串数组去重功能小结
2019/06/17 Javascript
layui 富文本赋值,取值,取纯文本值的实例
2019/09/18 Javascript
微信小程序动态添加和删除组件的现实
2020/02/28 Javascript
基于原生JS封装的Modal对话框插件的示例代码
2020/09/09 Javascript
Nginx搭建HTTPS服务器和强制使用HTTPS访问的方法
2015/08/16 Python
Python 正则表达式的高级用法
2016/12/04 Python
Python运算符重载详解及实例代码
2017/03/07 Python
Django使用HttpResponse返回图片并显示的方法
2018/05/22 Python
django解决跨域请求的问题详解
2019/01/20 Python
解决pyinstaller打包发布后的exe文件打开控制台闪退的问题
2019/06/21 Python
flask开启多线程的具体方法
2020/08/02 Python
python 星号(*)的多种用途
2020/09/21 Python
详解matplotlib绘图样式(style)初探
2021/02/03 Python
副职竞争上岗演讲稿
2014/05/12 职场文书
推广普通话标语
2014/06/27 职场文书
如何写早恋检讨书
2014/09/10 职场文书
机关职员工作检讨书
2014/10/23 职场文书
安全生产工作汇报
2014/10/28 职场文书
担保书格式范文
2015/09/22 职场文书
小学二年级语文教学反思
2016/03/03 职场文书
Java实现多文件上传功能
2021/06/30 Java/Android