2010-10-26 78 views
0
我想兩個算法其中之一之間知道

第一件事情是更好的減少沒有查詢的Zend的

選擇table1 *從tabel1內部聯接表2上table1.id = table2.table1_id。

然後提取或

select * from table2;

,然後使用foreach循環

SELECT * FROM表1,其中table1.id = table2.table1_id

*請告訴我一個合理的理由也

,現在我使用Zend,我相信第一個比第二個更快更好(我不知道爲什麼...只是一些先入爲主)

和在zend db profiler中,每次我得到 查詢:DESCRIBE menu_items時間:0.0 0084590911865234

有沒有辦法將其最小化?

,並請告訴我如何使用Zend組件

問候,

回答

1

使用內部的加盟Zend的兩個表聯接是比PHP循環更快,因爲查詢響應時間。在第一個中,您只會執行一個查詢,而在第二個中則只會執行一個查詢。該數據庫準備檢索數據,這意味着要快得多,然後通過不同的查詢手動連接表。

要加入與Zend,你需要這個(假設你在Zend_Db_Table類):

$select = $this->select()->setIntegrityCheck(false); 
$select->from(array('t1'=>'table1')) 
     ->join(array('t2'=>'table2'),'t2.table1_id =t1.id','*') 
     ->where('t1.deleted =?',0) 
     ->group('t1.id') 
     ->order('t1.date DESC') 
     ->limit(4); 
$result = $this->fetchAll($select); 

爲了防止DESCRIBE查詢,你可以硬編碼表的結構或緩存它。請點擊這裏:

http://framework.zend.com/manual/en/performance.database.html