PHP分页效率终结版!

这里仅展示出设计思路,具体安全问题,是否同步更新等可根据具体需求添加修改:

以前人们常用的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地址

   }

来源:http://blog.sina.com.cn/s/blog_5f0c0fe40100phf2.html

 

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值