PHP多次访问数据库,是否有优化方案
$QUERY="SELECT*FROMtb";$result=$mysql->_query($QUERY);while(!!$_rows=$mysql->_fetch_a...
$QUERY="SELECT * FROM tb";
$result=$mysql->_query($QUERY);
while(!!$_rows=$mysql->_fetch_array_list($result)){
//do something
$aaa="SELECT *FROM btb WHERE btb.id =$_rows[id]";
$bb=$mysql->_query($aaa);
while(!!$_rows=$mysql->_fetch_array_list($bb)){
//do something
}
像这种情况需要多次访问数据库,请问是否有优化方案,比如事先存入数组之类的。。。
} 展开
$result=$mysql->_query($QUERY);
while(!!$_rows=$mysql->_fetch_array_list($result)){
//do something
$aaa="SELECT *FROM btb WHERE btb.id =$_rows[id]";
$bb=$mysql->_query($aaa);
while(!!$_rows=$mysql->_fetch_array_list($bb)){
//do something
}
像这种情况需要多次访问数据库,请问是否有优化方案,比如事先存入数组之类的。。。
} 展开
1个回答
展开全部
我只针对你这个做优化吧。。
第一个不要用select * 这样的sql语句,你需要什么字段就写哪些字段
都需要的话,你都写出来,select * 效率很低的。。
第二个如果说你的后台中对这些数据的变动不是很频繁
然后你可以将查询结果存入memcahe中
我写一段伪代码
$mem_key="all";
$res = $memcache->get($mem_key);
//如果没有存入memcache中
if (empty($res){
//sql语句可以用left jion on关联查询
$aaa="select b.字段1,b.字段2...from btb as b left jion tb as b.id=t.id";
$bb=$mysql->_query($aaa);
while(!!$_rows=$mysql->_fetch_array_list($bb)){
//do something
$res ....
}
//结果存入memecahed中
$memcache->set($mem_key,$res,0,超时时间);
}
$res就是你获取的结果。。
你这段代码基本可以这样。。
第一个不要用select * 这样的sql语句,你需要什么字段就写哪些字段
都需要的话,你都写出来,select * 效率很低的。。
第二个如果说你的后台中对这些数据的变动不是很频繁
然后你可以将查询结果存入memcahe中
我写一段伪代码
$mem_key="all";
$res = $memcache->get($mem_key);
//如果没有存入memcache中
if (empty($res){
//sql语句可以用left jion on关联查询
$aaa="select b.字段1,b.字段2...from btb as b left jion tb as b.id=t.id";
$bb=$mysql->_query($aaa);
while(!!$_rows=$mysql->_fetch_array_list($bb)){
//do something
$res ....
}
//结果存入memecahed中
$memcache->set($mem_key,$res,0,超时时间);
}
$res就是你获取的结果。。
你这段代码基本可以这样。。
推荐律师服务:
若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询