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 strtr() 函数使用说明
Nov 21 PHP
php 论坛采集程序 模拟登陆,抓取页面 实现代码
Jul 09 PHP
PHP 向右侧拉菜单实现代码,测试使用中
Nov 03 PHP
PHP filter_var() 函数 Filter 函数
Apr 25 PHP
PHP获取短链接跳转后的真实地址和响应头信息的方法
Jul 25 PHP
PHP数组操作――获取数组最后一个值的方法
Apr 14 PHP
PHP Cookei记录用户历史浏览信息的代码
Feb 03 PHP
解决form中action属性后面?传递参数 获取不到的问题
Jul 21 PHP
Laravel中unique和exists验证规则的优化详解
Jan 28 PHP
php写app用的框架整理
Sep 29 PHP
laravel-admin 管理平台获取当前登陆用户信息的例子
Oct 08 PHP
php设计模式之原型模式分析【星际争霸游戏案例】
Mar 23 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 autoload与spl_autoload自动加载机制的深入理解
2013/06/05 PHP
解析在PHP中使用全局变量的几种方法
2013/06/24 PHP
PHP生成sitemap.xml地图函数
2013/11/13 PHP
PHP获取昨天、今天及明天日期的方法
2016/02/03 PHP
PHP基于反射机制实现插件的可插拔设计详解
2016/11/10 PHP
php高清晰度无损图片压缩功能的实现代码
2018/12/09 PHP
模仿JQuery.extend函数扩展自己对象的js代码
2009/12/09 Javascript
关于jQuery中的end()使用方法
2011/07/10 Javascript
YUI模块开发原理详解
2013/11/18 Javascript
jquery下拉select控件操作方法分享(jquery操作select)
2014/03/25 Javascript
JS使用cookie实现DIV提示框只显示一次的方法
2015/11/05 Javascript
jQuery过滤特殊字符及JS字符串转为数字
2016/05/26 Javascript
jQuery插入节点和移动节点用法示例(insertAfter、insertBefore方法)
2016/09/08 Javascript
微信小程序“摇一摇”的实例代码
2017/07/20 Javascript
react写一个select组件的实现代码
2019/04/03 Javascript
使用vue-cli3 创建vue项目并配置VS Code 自动代码格式化 vue语法高亮问题
2019/05/14 Javascript
关于element-ui的隐藏组件el-scrollbar的使用
2019/05/29 Javascript
layui table 表格上添加日期控件的两种方法
2019/09/28 Javascript
vue.js的状态管理vuex中store的使用详解
2019/11/08 Javascript
跟老齐学Python之从if开始语句的征程
2014/09/14 Python
python监控网站运行异常并发送邮件的方法
2015/03/13 Python
Python多进程库multiprocessing中进程池Pool类的使用详解
2017/11/24 Python
Python基于property实现类的特性操作示例
2018/06/15 Python
python中pygame安装过程(超级详细)
2019/08/04 Python
深入浅析Python代码规范性检测
2020/07/31 Python
今天学到的CSS最新技术(与图片背景相关)
2012/12/24 HTML / CSS
Solid & Striped官网:美国泳装品牌
2019/06/19 全球购物
建筑工程管理专业自荐信范文
2013/12/28 职场文书
《蓝色的树叶》教学反思
2014/02/24 职场文书
学习雷锋月活动总结
2014/07/03 职场文书
四风个人对照检查材料思想汇报
2014/09/25 职场文书
趣味运动会标语口号
2015/12/26 职场文书
《曹冲称象》教学反思
2016/02/20 职场文书
责任书格式
2019/04/18 职场文书
Go Plugins插件的实现方式
2021/08/07 Golang
SpringBoot2零基础到精通之异常处理与web原生组件注入
2022/03/22 Java/Android