Php Zend Framework选择where子句占位符会减慢进程
我正在使用Zend Framework 1.12.3,我注意到在where子句中使用“?”占位符会减慢过程:Php Zend Framework选择where子句占位符会减慢进程,php,zend-framework,placeholder,Php,Zend Framework,Placeholder,我正在使用Zend Framework 1.12.3,我注意到在where子句中使用“?”占位符会减慢过程: $query = $this->getDbTable()->select() ->from($this->getDbTable(), array('id')) ->where('id = ?', $id); 比以下速度慢得多: $query = $this->getDbTable()->select() ->fro
$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方法,而$\u 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_用户类:
class V1_Model_DbTable_Users extends Zend_Db_Table_Abstract
{
protected $_name = 'users';
}
有人遇到过同样的问题吗?你有什么解决办法吗?谢谢你,除非你有这种行为,否则你不应该考虑一些缓慢的事情。在我看来,这似乎是一种观点。对于时差问题,您必须在它的架构级别上解决这个问题。 许多人花时间试图找到一个不存在的问题,这应该会改进您自己的代码
别那么认真。这是你应该认为是有建设性的。
请记住,你的第一个例子是使用这个特性来引用输入,因为第二个例子与在原始SQL中写一样。
你能定义“相当慢”吗?我花了一些时间研究,似乎不仅仅是使用“?”占位符速度较慢,但也使用find()方法。我已经基于此快速启动创建了一个新项目。在viewAction中调用find()方法时,总负载约为1.10秒。这是测试项目和数据库,我不认为这是因为我的代码,因为它也发生在一个裸项目上。有什么想法吗?我会看看这个项目。