为了账号安全,请及时绑定邮箱和手机立即绑定

大数据量数据库查询建议

大数据量数据库查询建议

慕运维8079593 2019-05-07 10:06:28
$cardNoBegin=1;$cardNoEnd=10000;$where['number']=array('between',[$cardNoBegin,$cardNoEnd]);$list=VipCardModel::where($where)->field('id,number,issue_uid,rank')->select();foreach($listas&$value){//只想到foreach来处理,但是这样很奇怪,觉得这样处理不对。$value['name']=UserModel::where(array('id'=>$value['issue_uid']))->value('name');}
查看完整描述

2 回答

?
慕桂英546537

TA贡献1848条经验 获得超10个赞

shmiyle同学已经正确的回答了这个问题,我在他的基础上优化一下,提升一点效率
$where['number']=array('between',[$cardNoBegin,$cardNoEnd]);
$list=VipCardModel::where($where)->field('id,number,issue_uid,rank')->select();
$issueUidList=array_unique((array_column($list,'issue_uid')));
unset($list);
//查询用户信息
$userList=UserModel::where(array('id'=>array('in',$issueUidList)))->value('name');
$userInfoList=array_column($userList,'name','id');
foreach($listas$key=>$value){
$list[$key]['name']=$userInfoList[$value['issue_uid']]??'';
}
                            
查看完整回答
反对 回复 2019-05-07
?
MMTTMM

TA贡献1869条经验 获得超4个赞

这样肯定是不可取的,循环里面执行查询。可以试试with
$list=VipCardModel::where($where)->with('user')->field('id,number,issue_uid,rank')->select();
                            
查看完整回答
反对 回复 2019-05-07
  • 2 回答
  • 0 关注
  • 411 浏览
慕课专栏
更多

添加回答

举报

0/150
提交
取消
意见反馈 帮助中心 APP下载
官方微信