鍍金池/ 問(wèn)答/PHP  數(shù)據(jù)庫(kù)/ php從mysql獲取數(shù)據(jù)的時(shí)候數(shù)據(jù)關(guān)聯(lián)表數(shù)量應(yīng)該控制在什么范圍

php從mysql獲取數(shù)據(jù)的時(shí)候數(shù)據(jù)關(guān)聯(lián)表數(shù)量應(yīng)該控制在什么范圍

$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']]);
                
                
                
                

如上,這是目前我們項(xiàng)目中獲取數(shù)據(jù)的寫(xiě)法,關(guān)聯(lián)了多個(gè)表(表不是我架構(gòu)的),問(wèn)題是這樣關(guān)聯(lián)表對(duì)查詢(xún)速度是有影響的吧?如果有應(yīng)該如何重新設(shè)計(jì)查詢(xún)語(yǔ)句?

回答
編輯回答
悶騷型

影響太大了。 JOIN 應(yīng)該是按需 JOIN ,比如作查詢(xún)條件時(shí)可以用 WHEN ,能不聯(lián)就不聯(lián)。
但是看你的查詢(xún)字段每個(gè)表都要聯(lián),可以查出主記錄后遍歷查每一個(gè)關(guān)聯(lián)的字段。

2017年11月9日 09:20