2

我正在使用 Zend Framework 1.12.3,我注意到使用“?” where 子句中的占位符会减慢进程:

$query = $this->getDbTable()->select()
    ->from($this->getDbTable(), array('id'))
    ->where('id = ?', $id);

明显慢于:

$query = $this->getDbTable()->select()
    ->from($this->getDbTable(), array('id'))
    ->where('id =' . $id);

下面是 getDbTable 和 setDbTable 方法,而 $_dbTable 是受保护的属性:

public function setDbTable($dbTable)
{
    if (is_string($dbTable)) {
        $dbTable = new $dbTable();
    }
    if (!$dbTable instanceof Zend_Db_Table_Abstract) {
        throw new Exception('Invalid table data gateway provided');
    }
    $this->_dbTable = $dbTable;
    return $this;
}

public function getDbTable()
{
    if (null === $this->_dbTable) {
        $this->setDbTable('V1_Model_DbTable_Users');
    }
    return $this->_dbTable;
}

和 V1_Model_DbTable_Users 类:

class V1_Model_DbTable_Users extends Zend_Db_Table_Abstract
{
    protected $_name = 'users'; 
}

有没有人遇到过同样的问题?你有什么解决办法?谢谢

4

2 回答 2

1

请记住,您的第一个示例是使用该功能引用转义输入,而第二个示例与使用原始 SQL 编写相同。

于 2013-12-23T22:47:38.700 回答
0

在你有这种行为之前,你不应该考虑缓慢的事情。这在我看来是一种观点。对于时差问题,您必须在其架构级别之上出现问题。许多人花时间试图找到一个不存在的问题,以改进您自己的代码。

不要把它当回事。这只是您应该认为具有建设性的事情。

于 2013-09-06T15:12:52.377 回答