php从mysql获取数据的时候数据关联表数量应该控制在什么范围

$result = $this->alias('a')
                ->field('a.id,a.guest_name,a.guest_family_name,a.is_abroad,a.guest_first_name,a.guest_nationality,a.guest_sex,a.is_often,d.certificate_num,e.name certificate_type,b.room_id,c.room_name,g.group_name,a.checkin_time')
                ->where($where)
                ->where('a.guest_name|a.guest_family_name|a.guest_first_name',$name)
                ->join('account b','a.account_id=b.id')
                ->join('hotel_room c','b.room_id=c.id')
                ->join('account_user d','a.guest_id=d.id')
                ->join('account_certificate e','d.certificate_id=e.id')
                ->join('account_group g','a.group_id = g.id','LEFT')
                ->order('a.id','desc')
                ->paginate($arr['limit'],false,['page'=>$arr['page']]);
                
                
                
                

如上,这是目前我们项目中获取数据的写法,关联了多个表(表不是我架构的),问题是这样关联表对查询速度是有影响的吧?如果有应该如何重新设计查询语句?

阅读 2.4k
1 个回答

影响太大了。 JOIN 应该是按需 JOIN ,比如作查询条件时可以用 WHEN ,能不联就不联。
但是看你的查询字段每个表都要联,可以查出主记录后遍历查每一个关联的字段。

撰写回答
你尚未登录,登录后可以
  • 和开发者交流问题的细节
  • 关注并接收问题和回答的更新提醒
  • 参与内容的编辑和改进,让解决方法与时俱进
推荐问题