我想知道两种算法之间的第一件事,哪一种更好
从table1.id = table2.table1_id;
中的tabel1内连接table2中选择table1。*然后提取或
从table2中选择*;
然后使用foreach循环
从table1中选择* table1.id = table2.table1_id
*请告诉我一个似是而非的理由
现在我正在使用zend,我相信第一个比第二个更快更好(我不知道为什么......只是一些偏见)
并且在zend db profiler中,每次我都会收到
查询:DESCRIBE menu_items
时间:0.00084590911865234
有没有办法减少它?
请告诉我如何使用zend组件在zend中连接两个表
的问候,
答案 0 :(得分:1)
由于查询响应时间的原因,使用内连接比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