大数据量数据库查询建议

$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');}
慕运维8079593
浏览 412回答 2
2回答

慕桂英546537

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']]??'';}

MMTTMM

这样肯定是不可取的,循环里面执行查询。可以试试with$list=VipCardModel::where($where)->with('user')->field('id,number,issue_uid,rank')->select();
打开App,查看更多内容
随时随地看视频慕课网APP

相关分类

JavaScript