2010-06-25 65 views
4

這是不好的做法,我應該爲這個代碼想出來嗎?而不是連接表,合併對象:這是不好的做法?

function get_business_addresses($business_id) { 

    $query = $this->db->get_where('contact_business_addr_rel', array('business_id'=> $business_id)); 

    if ($query->num_rows() > 0) { 
     foreach ($query->result() as $row) { 
      $address_id = $row->address_id; 
      $address_type_id = $row->address_type_id; 
      $this->db->select('type'); 
      $q = $this->db->get_where('contact_business_address_type',array('id'=> $address_type_id)); 

      $query = $this->db->get_where('contact_business_addresses',array('id'=> $address_id)); 

      if ($query->num_rows() > 0) { 
       foreach ($query->result() as $row) { 

        $row2 = $q->row(); 
        $obj_merged = (object) array_merge((array) $row, (array) $row2); 
        $data[] = $obj_merged; 
       } 

      } 
     } 
    } 
    return $data; 
} 
+0

我後來用sql連接重新開發了這段代碼。它不是那麼糟糕。減少約7行代碼。 – 2010-07-08 04:24:36

回答

6

也許吧。我不能肯定地說,但看起來應該比使用JOIN慢得多。

我會說基準它是肯定的,但我經歷的經驗法則是「如果它可以在SQL中乾淨地完成,數據庫引擎可以做得比我更好」。

1

總之,是的,這是不好的。對於幾行(例如10行),這並沒有太大區別。但是,只要您的表恰好有10000行,意味着它首先必須獲取10000行,然後循環遍歷每行併合並所有內容。在這種情況下,一個簡單的JOIN將更快地

相關問題