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