当前位置:Gxlcms > 数据库问题 > MySQL 百万级分页优化(Mysql千万级快速分页)

MySQL 百万级分页优化(Mysql千万级快速分页)

时间:2021-07-01 10:21:17 帮助过:45人阅读

=dblink(); $db->pagesize=20; $sql=”select id from collect where vtype=$vtype”; $db->execute($sql); $strpage=$db->strpage(); //将分页字符串保存在临时变量,方便输出 while($rs=$db->fetch_array()){ $strid.=$rs[‘id‘].‘,‘; } $strid=substr($strid,0,strlen($strid)-1); //构造出id字符串 $db->pagesize=0; //很关键,在不注销类的情况下,将分页清空,这样只需要用一次数据库连接,不需要再开; $db->execute(“select id,title,url,sTime,gTime,vtype,tag from collect where id in ($strid)”); <?php while($rs=$db->fetch_array()): ?> <tr> <td> <?php echo $rs[‘id‘];?></td> <td> <?php echo $rs[‘url‘];?></td> <td> <?php echo $rs[‘sTime‘];?></td> <td> <?php echo $rs[‘gTime‘];?></td> <td> <?php echo $rs[‘vtype‘];?></td> <td> <a href=”?act=show&id=<?php echo $rs[‘id‘];?>” target=”_blank”><?php echo $rs[‘title‘];?></a></td> <td> <?php echo $rs[‘tag‘];?></td> </tr> <?php endwhile; ?> </table> <?php echo $strpage;

通过简单的变换,其实思路很简单:

1)通过优化索引,找出id,并拼成 “123,90000,12000″ 这样的字符串。

2)第2次查询找出结果。 
小小的索引+一点点的改动就使mysql 可以支持百万甚至千万级的高效分页! 
通 过这里的例子,我反思了一点:对于大型系统,PHP千万不能用框架,尤其是那种连sql语句都看不到的框架!因为开始对于我的轻量级框架都差点崩溃!只适 合小型应用的快速开发,对于ERP,OA,大型网站,数据层包括逻辑层的东西都不能用框架。如果程序员失去了对sql语句的把控,那项目的风险将会成几何 级数增加!尤其是用mysql 的时候,mysql 一定需要专业的dba 才可以发挥他的最佳性能。一个索引所造成的性能差别可能是上千倍! 
PS: 经过实际测试,到了100万的数据,160万数据,15G表,190M索引,就算走索引,limit都得0.49秒。

MySQL 百万级分页优化(Mysql千万级快速分页)

标签:...   支持   表设计   设计   填充   erp   数据库设计   速度   应该   

人气教程排行