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 文件状态缓存带来的问题
Dec 14 PHP
php 代码优化的42条建议 推荐
Sep 25 PHP
PHP防CC攻击实现代码
Dec 29 PHP
php数组转换js数组操作及json_encode的用法详解
Oct 26 PHP
php中chdir()函数用法实例
Nov 13 PHP
PHP的Socket通信之UDP通信实例
Jul 02 PHP
Smarty保留变量用法分析
May 23 PHP
php实现xml与json之间的相互转换功能实例
Jul 07 PHP
php 中的closure用法详解
Jun 12 PHP
PHP7数组的底层实现示例
Aug 25 PHP
解决PHP curl或file_get_contents下载图片损坏或无法打开的问题
Oct 11 PHP
PHP实现简单注册登录系统
Dec 28 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
PHP5.5.15+Apache2.4.10+MySQL5.6.20配置方法分享
2016/05/06 PHP
Laravel6.2中用于用户登录的新密码确认流程详解
2019/10/16 PHP
laravel5.6 框架操作数据 Eloquent ORM用法示例
2020/01/26 PHP
javascript 单选框,多选框美化代码
2008/08/01 Javascript
读jQuery之十三 添加事件和删除事件的核心方法
2011/08/23 Javascript
Firefox中beforeunload事件的实现缺陷浅析
2012/05/03 Javascript
常用的JavaScript验证正则表达式汇总
2013/11/26 Javascript
基于jQuery倾斜打开侧边栏菜单特效代码
2015/09/15 Javascript
jquery取消事件冒泡的三种方法(推荐)
2016/05/28 Javascript
浅析Bootstrap验证控件的使用
2016/06/23 Javascript
JS定时器实现数值从0到10来回变化
2016/12/09 Javascript
vue-router重定向不刷新问题的解决
2018/06/25 Javascript
vue鼠标移入添加class样式,鼠标移出去除样式(active)实现方法
2018/08/22 Javascript
微信小程序签到功能
2018/10/31 Javascript
[01:59]翻天覆地,因你而变,7.20版本地图更新速览
2018/11/24 DOTA
Python NumPy库安装使用笔记
2015/05/18 Python
Python中str is not callable问题详解及解决办法
2017/02/10 Python
Pycharm学习教程(2) 代码风格
2017/05/02 Python
Python使用回溯法子集树模板获取最长公共子序列(LCS)的方法
2017/09/08 Python
Python中多个数组行合并及列合并的方法总结
2018/04/12 Python
Python常见排序操作示例【字典、列表、指定元素等】
2018/08/15 Python
python构建基础的爬虫教学
2018/12/23 Python
numpy和pandas中数组的合并、拉直和重塑实例
2019/06/28 Python
python输出决策树图形的例子
2019/08/09 Python
Python模拟登录requests.Session应用详解
2020/11/17 Python
Python偏函数实现原理及应用
2020/11/20 Python
python中二分查找法的实现方法
2020/12/06 Python
法国一家多品牌成衣精品中/高档商店:Graduate Store
2019/08/28 全球购物
Footshop乌克兰:运动鞋的最大选择
2019/12/01 全球购物
班主任工作年限证明
2014/01/12 职场文书
大学生职业生涯规划范文
2014/01/22 职场文书
装修安全责任协议书
2016/03/22 职场文书
python爬虫selenium模块详解
2021/03/30 Python
详解Go语言Slice作为函数参数的使用
2021/07/02 Golang
集英社今正式宣布 成立游戏公司“集英社Games”
2022/03/31 其他游戏
使用python绘制分组对比柱状图
2022/04/21 Python