解决思路提供两个:
1、第一次读取数据库时,将程序所有的数据读出然后放入javascript数组里面,传入客户端,在客户端进行处理,这样不必每次都读数据库。
2、一次性将所以符合条件的数据全部读书,按照limit的条数将所有数据生成静态页面,所以所有的"下一页”、“未页”这些都是指向静态的页面,不需每次读数据。新浪的翻页大部分都是采用这种方法!
1、第一次读取数据库时,将程序所有的数据读出然后放入javascript数组里面,传入客户端,在客户端进行处理,这样不必每次都读数据库。
2、一次性将所以符合条件的数据全部读书,按照limit的条数将所有数据生成静态页面,所以所有的"下一页”、“未页”这些都是指向静态的页面,不需每次读数据。新浪的翻页大部分都是采用这种方法!
解决方案 »
- 有关mysql +PHP +apache 安全的 措施
- 求牛人的博客, 可以闲暇的时候去逛一下逛!!!!
- mysql 分组问题
- php谁有从数据库中取出单选按钮和多选按钮的值,在页面上以饼状图或者柱状图显示出的代码?
- 全局和静态变量的引用的问题
- 这个是 DeDeCMS 5.0 的TAG索引表, 能告诉这里详细字段的意思吗?还有它们的关系?
- 请教下php的Resource问题?
- 如何创建搜索引擎的?
- 如何在win2k专业版下配置apache+mysql+php4?
- 从html中选择一个时间段,把这个时间段传到php页面以便于查询此时间段内的记录
- 世上最简单问题!
- 还是一个关于Session的基本问题.
<script language = "javascript">
<?php
echo "var aa = new Array();\n";
for ($i = 0;$i<=10;$i++){
echo "aa[$i]=$i;\n";
}
echo "alert(aa[10]);\n";
?>
</script>
上面的语句虽然能正确执行,但觉得这么别扭。
还有你说的第二种方法我更是不会,如果一次生成所有静态页面,页面又存放在哪?请给我一个简单的例子吧。
梦豪的两种方法在针对少量数据有它的优势,但对于大数据量也是不可取的!
1, 你觉得把上万条记录信息放入jscript array中处理,合理吗?
2, 对上万条记录进行一次性读取,按每N条生成一个html页面,而且这个操作在每次数据更新时均进行,合理吗?以上两种不必一万条,超过一千条记录就够呛了~!
btw, to limenghao2(梦豪) 你见过新浪的信息分页,是采用静态页面链接?? 所以,我个人认为,处理大数据量,难免完全脱离数据库,你可以考虑程序方面的优化!
请回复,谢谢。
有个问题想问一下,ORACLE中的MINUS中执行过程会不会也遍历了整个数据库
我一般都是先取出数据总数然后算出当前页面的limit值.
其实只要在where中把索引做好,就算数据总数有几万条,从索引搜索下来还是很快的.以下是我的一个分页列表程序的片断.
if(!isset($page))
$page=1;
$page=(int)$page;
if(!isset($pagesize) or $pagesize=="")
$pagesize=DEFAULT_PAGESIZE;
$pagesize=(int)$pagesize; //初始化$page,$pagesize$sql="select count(*) from tab where conditions";
$this->db->query($sql);
$reccount=(int)$this->db->result(0); // 取出总记录数量$pagecount = floor($reccount/$pagesize);
if($reccount%$pagesize!=0)
$pagecount++;
if($page>$pagecount)
$page=$pagecount;
elseif($page<1)
$page=1; // 判断$page的正确性以及算出总页数$sql="select columes from tables where conditions order by columes limit $recstart,$pagesize"; //用limit $recstart,$pagesize取出某页的$pagesize条记录.在一个6000条记录的数据表中用select count(*)的耗时为0.1秒(因为制造数据库的人肯定会考虑到优化这样的语句,肯定不会遍历全部数据来获得这个数),第二次用0秒就可以得出(有缓存).而直接执行select * from table limit 3000,20使用时间为0.08秒(数据库通过索引读取这20条记录也不会遍历全部记录,所以效率也是很高的).第二次重复执行耗时为0.01秒.所以其实分页程序根本就不需要一次读取所有数据,通过js传递,那样做效率更低.