手工查询vs findDependentRowset

时间:2010-12-13 22:00:34

标签: zend-framework zend-db-table

我已经使用Zend构建了一个非常大的应用程序,我想知道哪个会更好,手动构建查询(使用Zend对象模型)

$db->select()
   ->form('table')
   ->join('table2',
          'table.id = table2.table_id')

或使用findDependentRowset方法(Zend doc for findDependentRowSet)。

我想知道,因为我做了一个测试来获取多个表上的数据并显示表中的所有信息,findDependentRowset似乎运行得更慢。我可能错了,但我想每次调用findDependentRowset时都会生成一个新查询:

$table1 = new Model_Table1;
$rowset = $table1-fetchAll();
foreach($rowset as $row){
    $table2data = $row->findDependentRowset('Model_Table2', 'Map');

    echo $row['field'] . ' ' . $table2data['field'];
}

那么,哪一个更好,是否有办法使用findDependentRowset来构建复杂查询,这些查询可以跨越5个表,这些表的运行速度与手工查询一样快?

由于

1 个答案:

答案 0 :(得分:2)

通常,构建自己的查询是最好的方法,因为zend只会创建一个对象(或一组对象)并只进行一次查询。

如果使用findDependentRowset,Zend将执行另一个查询并使用每个调用的结果构建另一个对象(或set)。

您应该仅在非常具体的情况下使用它。

请参阅此问题:PHP - Query single value per iteration or fetch all at start and retrieve from array?