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程序员工具
May 26 PHP
PHP 得到根目录的 __FILE__ 常量
Jul 23 PHP
PHP的explode和implode的使用说明
Jul 17 PHP
10条PHP高级技巧[修正版]
Aug 02 PHP
在项目中寻找代码的坏命名
Jul 14 PHP
ajax在joomla中的原生态应用代码
Jul 19 PHP
PHP-redis中文文档介绍
Feb 07 PHP
使用PHP进行微信公众平台开发的示例
Aug 21 PHP
PHP+MySQL之Insert Into数据插入用法分析
Sep 27 PHP
php强制下载文件函数
Aug 24 PHP
php 开发中加密的几种方法总结
Mar 22 PHP
laravel 如何实现引入自己的函数或类库
Oct 15 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中json_encode、json_decode与serialize、unserialize的性能测试分析
2010/06/09 PHP
php+MySQL实现登录时验证登录名和密码是否正确
2016/05/10 PHP
PHP实现的AES 128位加密算法示例
2019/09/16 PHP
PHP实现基本留言板功能原理与步骤详解
2020/03/26 PHP
通过Unicode转义序列来加密,按你说的可以算是混淆吧
2007/05/06 Javascript
JS 判断代码全收集
2009/04/28 Javascript
jquery load事件(callback/data)使用方法及注意事项
2013/02/06 Javascript
jQuery学习笔记之toArray()
2014/06/09 Javascript
JQuery导航菜单选择特效
2016/04/11 Javascript
Actionscript与javascript交互实例程序(修改)
2016/09/22 Javascript
js is_valid_filename验证文件名的函数
2017/07/19 Javascript
js计时事件实现圆形时钟
2020/03/25 Javascript
jquery实现上传文件进度条
2020/03/26 jQuery
Python通过future处理并发问题
2017/10/17 Python
Numpy掩码式数组详解
2018/04/17 Python
异步任务队列Celery在Django中的使用方法
2018/06/07 Python
python 使用re.search()筛选后 选取部分结果的方法
2018/11/28 Python
详解Python循环作用域与闭包
2019/03/21 Python
Python自动化运维之Ansible定义主机与组规则操作详解
2019/06/13 Python
Django错误:TypeError at / 'bool' object is not callable解决
2019/08/16 Python
python框架Django实战商城项目之工程搭建过程图文详解
2020/03/09 Python
python列表删除和多重循环退出原理详解
2020/03/26 Python
HTML5事件方法全部汇总
2016/05/12 HTML / CSS
英国邮购活的植物主要供应商:Gardening Direct
2019/01/28 全球购物
领先的英国注册在线药房 :Simply Meds Online
2019/03/28 全球购物
心碎乌托邦的创业计划书范文
2013/12/26 职场文书
五年级数学教学反思
2014/02/11 职场文书
旺仔牛奶广告词
2014/03/20 职场文书
倡议书格式范文
2014/04/14 职场文书
毕业生工作求职信
2014/06/30 职场文书
国际贸易毕业生求职信
2014/07/20 职场文书
2015年秘书个人工作总结
2015/04/25 职场文书
三傻大闹宝莱坞观后感
2015/06/03 职场文书
Linux下使用C语言代码搭建一个简单的HTTP服务器
2022/04/13 Servers
Spring Boot 实现 WebSocket
2022/04/30 Java/Android
JavaScript实现音乐播放器
2022/08/14 Javascript