最新消息:七维网络改版啦,域名www.7dwww.com

thinkphp循环中减少查询提高效率的一种方法

网络技术 admin 1844浏览 0评论

记得以前有一个项目套了3层循环,每层循环中还有不少的数据库查询,导致效率低下,页面打开速度很慢,服务器资源也占用很大,只能想办法进行优化。

其实也很简单就是把重复的查询放在循环外,把数据先查询出来放在数组中,循环中的数据库查询改成查询数组,效率得到很大的提升。

举个例子:

我们要列出操作日志列表,日志表中存了用户ID没有存用户姓名,要根据用户ID查询出用户表中的用户姓名,可能我们会这样写:

foreach ($log_list as $k=>$v){
$log_list[$k]['username'] = db('user')->where('userid',$v[userid])->find()['userid'];
}

这样写的话,每循环一次就会产生一次数据库查询。

优化之后只用查询一次用户表就可以达到同样的效果,下面是优化之后的代码:

$user_array = db('user')->column('username','userid');
foreach ($log_list as $k=>$v){
$log_list[$k]['username'] = $user_array[$v[userid]];
}

我们可以看到我们先把用户表查询出来的数据存在数组中,循环中只调用了数组。

在数据比较少时效率提升不明显,但是当数据量比较大,同时又有很多层的循环时,效果还是比较显著的。

转载请注明:七维网络 » thinkphp循环中减少查询提高效率的一种方法

头像
发表我的评论
取消评论

Captcha Code

表情

Hi,您需要填写昵称和邮箱!

  • 昵称 (必填)
  • 邮箱 (必填)
  • 网址