联表查还是分开查好

情况一:

已知有两个表,一个用户表(user)一百万条数据,一个汽车表(car)一百万条数据,要求获取某个用户的信息和其名下汽车的信息

单独查

$info=Db::name('user')->where('id',56228)->find();//用户信息
$lists=Db::name('car')->where('a_id',56228)->select();//名下汽车信息

所花时间 0.025451s

联表查

$lists=Db::name('user')->alias('a')->field('a.name,a.birth,a2.name as car_num,a2.num')
    ->join('car a2','a.id=a2.a_id')->where('a.id',56228)->select();

所花时间 0.029048s

联表后 user表 只查一条 

情况二:

表a mysql结构

 表a2 结构

 表a 通过paimai_id关联表a2

数据总量 1450000条

联表查询语句

for($i=1;$i<=100;$i++){
    $num[]=$i;
}
echo '<pre>';
$where['a1.id']=['in',$num];
Debug::remark('begin');
    $lists=Db::name('a')->alias('a1')->field('a1.name,a2.title')->join('a2','a1.paimai_id=a2.id')
        ->where($where)
        ->select();
    var_dump($lists);
Debug::remark('end');

所用时间  0.033930

不联表查询

 for($i=1;$i<=100;$i++){
            $num[]=$i;
        }
        echo '<pre>';
        $where['id']=['in',$num];
        Debug::remark('begin');

        $lists=Db::name('a')->where($where)->select();
        foreach ($lists as $v){
            $info=Db::name('a2')->where(['id'=>$v['paimai_id']])->find();
            $data['name']=$v['name'];
            $data['title']=$info['title'];
            $datas[]=$data;
        }
        var_dump($datas);
        Debug::remark('end');

所用时间  0.084358

感觉还是联表的好

 

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

李修缘999

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值