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 缓冲的免费实现方法
Oct 09 PHP
PHP中的正规表达式(一)
Oct 09 PHP
关于mysql 字段的那个点为是定界符
Jan 15 PHP
把1316这个数表示成两个数的和,其中一个为13的倍数,另一个是11的倍数,求这两个数。
Jun 24 PHP
php使用array_rand()函数从数组中随机选择一个或多个元素
Apr 28 PHP
PHP中__FILE__、dirname与basename用法实例分析
Dec 01 PHP
PHP中preg_match正则匹配中的/u、/i、/s含义
Apr 17 PHP
php读取csc文件并输出
May 21 PHP
PHP实现伪静态方法汇总
Jan 13 PHP
php上传图片获取路径及给表单字段赋值的方法
Jan 23 PHP
PHP中单例模式与工厂模式详解
Feb 17 PHP
Laravel框架分页实现方法分析
Jun 12 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
图象函数中的中文显示
2006/10/09 PHP
7个超级实用的PHP代码片段
2011/07/11 PHP
在PHP上显示JFreechart画的统计图方法
2013/11/03 PHP
Session 失效的原因汇总及解决丢失办法
2015/09/30 PHP
JS实现仿京东淘宝竖排二级导航
2014/12/08 Javascript
Nodejs实战心得之eventproxy模块控制并发
2015/10/27 NodeJs
浅析JS运动
2015/12/28 Javascript
浅谈Javascript中的Label语句
2016/12/14 Javascript
详解如何较好的使用js
2016/12/16 Javascript
B/S(Web)实时通讯解决方案分享
2017/04/06 Javascript
Ionic3 UI组件之Gallery Modal详解
2017/06/07 Javascript
element-ui上传一张图片后隐藏上传按钮功能
2019/05/22 Javascript
Vue实现简单的跑马灯
2020/05/25 Javascript
python基础教程之获取本机ip数据包示例
2014/02/10 Python
python使用ctypes模块调用windowsapi获取系统版本示例
2014/04/17 Python
python执行shell获取硬件参数写入mysql的方法
2014/12/29 Python
使用python实现省市三级菜单效果
2016/01/20 Python
使用C#配合ArcGIS Engine进行地理信息系统开发
2016/02/19 Python
Python实现包含min函数的栈
2016/04/29 Python
在python的类中动态添加属性与生成对象
2016/09/17 Python
Flask框架的学习指南之制作简单blog系统
2016/11/20 Python
Python脚本实现自动将数据库备份到 Dropbox
2017/02/06 Python
python微信跳一跳系列之色块轮廓定位棋盘
2018/02/26 Python
使用python serial 获取所有的串口名称的实例
2019/07/02 Python
python并发爬虫实用工具tomorrow实用解析
2019/09/25 Python
Python实现随机取一个矩阵数组的某几行
2019/11/26 Python
np.random.seed() 的使用详解
2020/01/14 Python
django 装饰器 检测登录状态操作
2020/07/02 Python
利用Python pandas对Excel进行合并的方法示例
2020/11/04 Python
KLOOK客路:发现更好玩的世界,预订独一无二的旅行体验
2016/12/16 全球购物
英国品牌男装折扣网站:Brown Bag
2018/03/08 全球购物
实习求职信
2013/12/01 职场文书
战友聚会邀请函
2014/01/18 职场文书
医院合作协议书
2014/08/19 职场文书
工作态度怎么写
2015/06/25 职场文书
漫画「日和酱的要求是绝对的」第3卷封面公开
2022/03/21 日漫