如果我需要查询出1万以上的记录,又要关联其他表的字段,怎么做效率会快?
$cardNoBegin = 1;
$cardNoEnd = 10000;
$where['number'] = array('between' , [$cardNoBegin , $cardNoEnd]);
$list = VipCardModel::where($where)->field('id,number,issue_uid,rank')->select();
foreach($list as &$value){
// 只想到foreach来处理,但是这样很奇怪,觉得这样处理不对。
$value['name'] = UserModel::where(array('id' => $value['issue_uid']))->value('name');
}
如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。
绑定邮箱获取回复消息
由于您还没有绑定你的真实邮箱,如果其他用户或者作者回复了您的评论,将不能在第一时间通知您!
发布评论
评论(7)
如果是分页建议使用第一张表差出来id
第二个表做 in 操作
如果是超过1万的数据,建议直接使用dump等离线工具,结合实际的需求考虑,因为本身in数量大了以后性能很不好
宗旨:
1、不要在循环里边执行Sql
2、尽量不要使用联合查询
以上两点都会给mysql带来很大的负担,正确的做法应该是将计算和关联的工作交给php去处理
思路:
1、用最精简的sql拿到所需数据
2、通过php的循环来关联这些数据
这样肯定是不可取的,循环里面执行查询。
可以试试with
我提供两个个思路
第一个:
第二个:
shmiyle同学已经正确的回答了这个问题,我在他的基础上优化一下,提升一点效率
这样肯定是不可取的,循环里面执行查询。
可以试试with