php优化查询foreach代码实例讲解
发布:smiling 来源: PHP粉丝网 添加日期:2022-04-20 11:37:54 浏览: 评论:0
这篇文章主要介绍了php优化查询foreach代码实例讲解,列举了代码实例和测试结果,有感兴趣的同学可以学习下。
php代码优化
应避免在php foreach里面进行sql查询
以下代码示例使用了laravel的操作数据库api,eloquent orm
foreach里面执行两次sql查询
- // $datas 要返回的数据
- foreach ($datas as $_v) {
- // todo 在foreach中查询了两次 **time**: 290 ms(postman)
- $uid = $_v->uid;
- $_v->user_name = User::find($uid)->username; // 1
- $_v->user_avatar = User::find($uid)->avatar; // 2
- }
foreach里面执行一次sql查询
- foreach ($datas as $_v) {
- // todo
- // 简单的优化使得两次sql查询变成一次
- // 在foreach中查询了一次 **time**: 230 ms(postman)
- $user = User::find($_v->uid)); // 1
- $_v->user_name = $user->username;
- $_v->user_avatar = $user->avatar;
- }
将sql查询移到foreach外面
上面两个方法都不可避免的在foreach里面执行了数据库查询
**应避免在foreach中执行sql查询**
此处我的做法是再加一层foreach+if来代替sql查询
// 本质上是将foreach中的查询移到外面
- // $tmp_data_arr 是存储在foreach外面执行的数据库查询结果
- foreach ($tmp_data_arr as $value) {
- foreach ($datas as $_v) {
- if ($_v->uid === $value['id']) { // **time**: 180 ms(postman)
- $_v->user_name = $value['username'];
- $_v->user_avatar = $value['avatar'];
- }
- }
- }
小结
// 返回数据
return $datas;
经过简单的优化:时间(ms):290 -> 230 -> 180
Tags: php优化查询 foreach
- 上一篇:PHP随机生成18位不重复的订单号代码实例
- 下一篇:最后一页
相关文章
- ·php分割字符串并循环输出(2014-03-13)
- ·php foreach 传值还是传引用(2014-09-13)
- ·PHP中for循环与foreach的区别(2018-08-06)
- ·foreach用法是什么?(2020-01-10)
- ·[PHP] foreach循环的引用赋值中出现的问题(2020-02-22)
- ·PHP学习之foreach循环时加&符号的说明(2020-03-05)
- ·php foreach循环中使用引用的问题(2020-05-16)
- ·PHP中foreach()用法汇总(2021-06-07)
- ·浅谈PHP中foreach/in_array的使用(2021-06-23)
- ·PHP关于foreach复制知识点总结(2021-11-06)
推荐文章
热门文章
最新评论文章
- 写给考虑创业的年轻程序员(10)
- PHP新手上路(一)(7)
- 惹恼程序员的十件事(5)
- PHP邮件发送例子,已测试成功(5)
- 致初学者:PHP比ASP优秀的七个理由(4)
- PHP会被淘汰吗?(4)
- PHP新手上路(四)(4)
- 如何去学习PHP?(2)
- 简单入门级php分页代码(2)
- php中邮箱email 电话等格式的验证(2)