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实现从ftp服务器上下载文件树到本地电脑的程序
Feb 10 PHP
解析:php调用MsSQL存储过程使用内置RETVAL获取过程中的return值
Jul 03 PHP
windows7下安装php的imagick和imagemagick扩展教程
Jul 04 PHP
PHP下载远程图片并保存到本地方法总结
Jan 22 PHP
php读取txt文件并将数据插入到数据库
Feb 23 PHP
thinkphp3.x自定义Action、Model及View的简单实现方法
May 19 PHP
Yii编程开发常见调用技巧集锦
Jul 15 PHP
ecshop适应在PHP7的修改方法解决报错的实现
Nov 01 PHP
Yii2.0建立公共方法简单示例
Jan 29 PHP
PHP如何使用JWT做Api接口身份认证的实现
Feb 03 PHP
PHP常用字符串函数用法实例总结
Jun 04 PHP
thinkphp诸多限制条件下如何getshell详解
Dec 09 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学习教程之第1天
2008/06/15 PHP
PHP英文字母大小写转换函数小结
2014/05/03 PHP
smarty半小时快速上手入门教程
2014/10/27 PHP
PHP检测用户语言的方法
2015/06/15 PHP
PHP使用正则表达式获取微博中的话题和对象名
2015/07/18 PHP
如何利用预加载优化Laravel Model查询详解
2017/08/11 PHP
不要小看注释掉的JS 引起的安全问题
2008/12/27 Javascript
在标题栏显示新消息提示,很多公司项目中用到这个方法
2011/11/04 Javascript
jQuery 关于伪类选择符的使用说明
2013/04/24 Javascript
window.location.href的用法(动态输出跳转)
2014/08/09 Javascript
jquery.mobile 共同布局遇到的问题小结
2015/02/10 Javascript
Vue.js路由组件vue-router使用方法详解
2016/12/02 Javascript
jQuery快速实现商品数量加减的方法
2017/02/06 Javascript
Node.js使用gm拼装sprite图片
2017/07/04 Javascript
jQuery实现表格的增、删、改操作示例
2019/01/27 jQuery
node.js域名解析实现方法详解
2019/11/05 Javascript
vue组件讲解(is属性的用法)模板标签替换操作
2020/09/04 Javascript
Vue开发中常见的套路和技巧总结
2020/11/24 Vue.js
[01:46]新英雄登场
2019/09/10 DOTA
使用Python快速搭建HTTP服务和文件共享服务的实例讲解
2018/06/04 Python
PyTorch读取Cifar数据集并显示图片的实例讲解
2018/07/27 Python
一行python实现树形结构的方法
2019/08/09 Python
Pytorch抽取网络层的Feature Map(Vgg)实例
2019/08/20 Python
常用的HTML5列表标签
2017/06/20 HTML / CSS
美国最受欢迎的童装品牌之一:The Children’s Place
2016/07/23 全球购物
Harrods英国:世界领先的奢侈品百货商店
2020/09/23 全球购物
PHP如何防止SQL注入
2014/05/03 面试题
ajax是什么及其工作原理
2012/02/08 面试题
幼儿园教育教学反思
2014/01/31 职场文书
电子信息工程自荐信
2014/05/26 职场文书
2014年物流工作总结
2014/11/25 职场文书
2014年卫生院工作总结
2014/12/03 职场文书
先进党员事迹材料
2014/12/24 职场文书
导游词之崇武古城
2019/10/07 职场文书
7个你应该知道的JS原生错误类型
2021/04/29 Javascript
python 镜像环境搭建总结
2022/09/23 Python