日期:2014-05-17  浏览次数:20401 次

PHP问题
请各位高手指点一下:下面是我写的程序从数据库里面读出来的数据,数据量很大,所以运行的速度非常的慢,怎么样去优化它,或者怎么样把它生成一个文件,然后定时缓存成文件?
foreach ($forums as $k=>$v){
$sql = "SELECT * FROM ".$forum->_prefix.$forum->_table_name." WHERE parent_id = ".$v['forum_id']." ORDER BY post_cnt DESC LIMIT 0,6 ";
$forums[$k]['mobiles'] = $forum->_db->fetchAll($sql);
foreach ($forums[$k]['mobiles'] as $s=>$t){
$prod_id = $t['prod_id'];
$sql = " SELECT count(prod_id) FROM ".$profileM->_prefix.$profileM->_table_name." WHERE prod_id = '".$prod_id."' GROUP BY prod_id ";
$forums[$k]['mobiles'][$s]['ucount'] = intval($profileM->_db->fetchOne($sql));
}
}
 $this->view->forum = $forums;

------解决方案--------------------
首先, 你的数据库有没加索引 ?
------解决方案--------------------
1.选择数据索引很重要的.
2.能不能将大量数据分表.比如一个月的数据分一个表.进行整合.

------解决方案--------------------
你在数据库建一个索引
------解决方案--------------------
循环里面套sql查询一定要少用,非用不可的话 外层循环数量也要在控制中

先改成用一条sql实现 看看sql的效率
------解决方案--------------------
foreach