我正在使用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';
}
有没有人遇到同样的问题?你有什么解决办法?感谢
答案 0 :(得分:1)
请记住,您的第一个示例是使用该功能引用转义输入,其中第二个示例与在原始SQL中编写它相同。
答案 1 :(得分:0)
在你有这种行为之前,你不应该考虑缓慢的事情。这在我看来是一个意见。对于时间差异很重要,您必须在其架构级别以上存在问题。 许多人花时间试图找到一个不存在的问题,因为应该改进自己的代码。
不要这么认真。这只是你应该认为具有建设性的东西。