很多程序朋友在写分页是特别是mysql有了limit n,m;这样的写法,分页从此简单了,但方不知道这种分页几万数据没有问题,但在百万千万级时就无法使用了,今天我们来介绍这两种分页的优化方法。
php写功能时,只要用的还是mysql,基本都是两步走
1、取得总数,算页数。SQL语句自然是
| 代码如下 | 复制代码 |
| SELECT count(*) FROM tablename; | |
2、根据指定的页码号,取得相应的数据。对应的SQL语句,在网上随便查,都是一样的:
SELECT f1,f2 FROM table LIMIT offset,length
实例分页类
| 代码如下 | 复制代码 |
|
var $start_index; //所要显示记录的首行序号 var $total_pages; //总页数 var $arr_page_query; //数组,包含分页显示需要传递的参数 var $first; //方法
} /********************************************* /********************************************* /********************************************* //查询数据,数据库链接等信息应在类调用的外部实现 //利用LIMIT关键字获取本页所要显示的记录 $result=mysql_query($psql) or die(mysql_error()); //将查询结果放在result数组中
$this->first=1; /********************************************* "; echo ""; echo ""; } /********************************************* "; echo ""; echo ""; } } 调用: <?php include_once("../config_jj/sys_conf.inc"); $smarty = new Smarty_Jsnh(); <?php $pageSupport = new PageSupport($PAGE_SIZE); //实例化PageSupport对象 $current_page=$_GET["current_page"];//分页当前页数 if (isset($current_page)) { $pageSupport->__set("current_page",$current_page); } else { $pageSupport->__set("current_page",1); } ?> if ($pageSupport->current_records > 0) //如果数据不为空,则组装数据 $news_arr[$i] = array('news' => array('id' => $id,'title' => $title)); } //关闭数据库 $pageinfo_arr = array( $smarty->assign('results', $news_arr); ?> {foreach item=o from=$results} | |
